部署的应用函数具有空的 host.json,没有主机键



我的 Azure 应用程序功能遇到了一个奇怪的问题,我找不到任何关于此的内容。

我在不更改其代码的情况下重新发布了我的函数,但突然该函数停止工作,当我导航到 Azure 上的函数页面时,我会收到以下消息:

错误:

检索主密钥时出错。

如果我导航到函数的设置,我可以看到没有生成任何键,并且host.json文件是空的。但是,使用 Kudu 浏览我的函数文件会显示文件内容是正确的。

还有两件事使这更奇怪:

  1. 函数在本地正常工作
  2. 如果我获取另一个函数的代码并将其部署在这个函数上,我的函数可以正常工作,这意味着这不是与我的函数配置有关的问题,而是与其代码有关的问题

你们对此有什么指示吗?

编辑:

让我对此添加更多详细信息。

假设我有 2 个解决方案,A.slnB.sln. 我在 Azure 上还有 2 个应用程序功能,假设F_1F_2.

A.slnB.sln具有完全相同的结构,唯一的区别在于业务逻辑。 这同样适用于F_1F_2,它们唯一的区别是相关的存储帐户,因为每个函数都有自己的。

目前A.sln部署在F_1上,B.sln部署在F_2上,唯一工作的是F_1。 如果我在F_2上部署A.slnF_2开始工作,所以我的想法是B.sln的代码有问题,因为A.sln使用相同的配置工作。

函数应用在应用程序设置AzureWebJobsDashboardAzureWebJobsStorageWEBSITE_CONTENTAZUREFILECONNECTIONSTRING(如果按消耗计划运行(中引用了存储帐户。清除此存储或只是重新创建它都可以解决问题。

我还建议为每个函数应用创建单独的存储帐户 - 至少只要存在这些难以发现的 bug。当此类问题仅影响单个函数应用时,修复它们要容易得多。

我不知道这里是否是这种情况,但我发现在我的情况下(函数应用程序 v3 的新部署(,如果其中有注释行,host.json在 Azure 上是空的。删除注释解决了我的问题,host.json 文件现已正确部署。

原因之一可能是存储帐户中的密钥可能已轮换。因此,在 azure 函数的AzureWebJobsDashboardAzureWebJobsStorage中引用的连接字符串将有所不同。

解决方案:转到AzureWebJobsDashboard中引用的存储帐户,AzureWebJobsStorage-> 访问密钥 -> 复制 key1 下的连接字符串,并将其用于AzureWebJobsDashboardAzureWebJobsStorage

最新更新