我有一个名称超过 32 个字符的 Azure Functions 应用程序。该应用程序有一个生产槽和一个暂存槽。因此,它们的默认主机 ID 将导致冲突,如HostID 截断可能导致冲突中所述。
因此,我想在我的两个插槽上设置
AzureFunctionsWebHost:hostId
(或 AzureFunctionsWebHost__hostId
)具有唯一值,以避免这种冲突。该配置值是否应该是插槽粘性的?
如Azure-function-host文档中所述,我们可以为您的应用程序设置显式指定主机 ID,如下所示:
AzureFunctionsWebHost__hostId
(Windows 和 Linux)AzureFunctionsWebHost:hostId
(仅限 Windows)如果有任何其他限制可以通过 HostIdValidator
满足来自文档:生成 ID 的一种简单方法是获取 GUID,删除破折号并将其设为小写,例如1835D7B5-5C98-4790-815D-072CC94C6F71 => 1835d7b55c984790815d072cc94c6f71
您分享的 GIT 讨论涵盖了大部分信息。
主机 ID 值对于您正在运行的所有应用程序/插槽应该是唯一的
实际上,只有当它们共享相同的存储帐户时才是如此。根据我的理解,这意味着当您在函数的所有插槽中为超过 32 个字符的应用程序名称使用相同的存储(这 32 个前导字符具有相同的值)时,您必须定义一个插槽粘性
hostId
.
这需要设置并粘贴到部署槽中。这已记录在here
您可以使用 AzureFunctionsWebHost__hostid 设置在应用程序设置中显式设置函数应用的特定主机 ID。有关详细信息,请参阅 AzureFunctionsWebHost__hostid。
当槽位之间发生冲突时,必须为每个槽位(包括生产槽位)设置特定的主机ID。您还必须将这些设置标记为部署设置,以便它们不会被交换。要了解如何创建应用程序设置,请参阅使用应用程序设置。