visual-studio - 从 Visual Studio 部署 Azure Function Slot 部署生产

标签 visual-studio azure azure-functions azure-deployment-slots

简短:如何在 Visual Studio 中创建部署部署槽与生产槽的发布配置文件?

长: 当您接到 Sev1 电话,说生产已中断,并且您知道在您刚刚向集成部署槽进行部署的几分钟前。是的,这就是发生在我身上的事情,我一生都无法解释。

因此,我们为 Azure Function 应用程序提供了一个名为“Int”的部署槽。创建发布配置文件时,我只需使用 Visual Studio 中的“创建新配置文件”向导并选择“选择现有”Azure 应用服务,然后深入“Int”部署槽。看起来很简单。这样做的话会导致 Int AND Production 都得到部署。这当然是出乎意料的,而且显然是灾难性的。

在门户中进行一些挖掘后,我在 Azure Function 应用程序的“概述”部分中发现了一个“下载发布配置文件”按钮。单击它用于 Production 以及 INT 会生成两个具有不同用户、destinationAppUrls 等的单独文件。两者之间唯一相同的是 FTPpublishUrl,但我假设服务器将根据传入的凭据。

事实上,尽管我有两个独特的发布配置文件,一个用于 prod,一个用于 int,部署其中任何一个都会更新生产和我们的部署槽。

以下列出了我自己尝试修复此问题但无济于事的问题:

  1. 从 Visual Studio 中删除了两个发布配置文件并通过向导重新创建它们。
  2. 从 Visual Studio 中删除了两个发布配置文件,并通过从门户下载的配置文件重新创建了它们。
  3. 删除了 INT 发布配置文件,在门户中为 INT 部署槽创建了一个新的 FTP 用户,更新了下载的 INT 配置文件,然后将其导入到 Visual Studio 中。 <== 老实说,我认为这很愚蠢,因为我不认为 VS 正在使用 FTP 进行部署。但我可能是错的。
  4. 确保自动交换已关闭。
  5. 使用 FTP 客户端通过发布凭据手动登录。事实证明,即使 Production 和 Int 有不同的“FTP 部署用户”作为同一位置的任一点登录。 (这最终似乎是问题所在)
  6. 点击部署槽上的“重置发布配置文件”并重新下载配置文件。

除了失去我什至没有失去的自动交换功能之外,我想解决这个问题的一种方法是创建一个完全独立的应用程序,从而迫使它正常工作。如果可能的话,我真的想避免这种情况。

在此先感谢您的帮助。

最佳答案

这不应该发生,但如果我不得不猜测,您必须在两个应用中定义相同的 WEBSITE_CONTENTAZUREFILECONNECTIONSTRINGWEBSITE_CONTENTSHARE 值。前者是将保存应用内容的存储帐户,后者是该存储帐户中的共享名称。两者共享相同的 WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 没问题,但如果您也共享相同的 WEBSITE_CONTENTSHARE,那么最终会出现您所看到的奇怪行为。

通常,当您通过工具创建函数应用程序时,它应该为每个应用程序创建一个具有随机名称的新共享。如果您使用 ARM 模板或其他方法进行部署并将这两者设置为相同,您将遇到这种行为。

关于visual-studio - 从 Visual Studio 部署 Azure Function Slot 部署生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50791616/

相关文章:

python - Azure Functions for python、结构化日志记录到 Application Insights?

node.js - Azure函数中途重新启动然后永远不会返回(HTTP触发器)

azure - 如何在Azure Function中配置Serilog设置?

c# - 让设计者为 UserControl 的简单 List 属性生成 AddRange

javascript - 在 Visual Studio 2015 的 UWP 中调试 Javascript

azure - ARM 模板 webtest 警报规则失败并显示 ResourceNotFound

azure - 将 Azure 生产中的连续 Webjob 交换到暂存槽

azure - 将 Base-64 pfx 转换为可用的 pkcs#12

visual-studio - Visual Studio 正在锁定 .jfm 文件

c# - 将 VSIX 功能添加到 C# 类库