You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure函数应用反复出现Function host未运行错误的原因排查求助

问题诊断与解决方案

错误反复出现的根本原因

1. 存储账户共享引发密钥冲突

你的两个Function App共用了同一存储账户,而Function App的密钥(包括host密钥、函数密钥)会存储在存储账户的.azurefunctions/secrets目录下,且每个应用有独立的加密密钥来加密这些备份文件。当一个应用生成新的密钥快照,另一个应用无法用自己的加密密钥解密,就会触发"无法解密的密钥备份"错误;同时,若两个应用的密钥文件被意外交叉访问,就会出现"共享同一密钥"的提示。

2. 手动删除快照文件破坏了密钥存储一致性

你通过FTP删除*.snapshot.{timestamp}.json的操作打乱了平台的自动密钥备份机制:

  • 平台会定期自动备份密钥到存储账户,删除快照后,系统会尝试重新生成备份,但由于存储账户共享,新备份会被另一个应用识别为无效,进而反复触发解密错误。
  • 密钥文件的缺失会导致Function App无法正常加载宿主环境(即"Function host is not running"),同时平台会自动重置受影响应用的密钥(如functionName2的主密钥变更)。

3. 特定环境的配置异常

仅该客户环境出现问题,可能存在以下特殊情况:

  • 存储账户的权限配置错误:两个Function App的身份对存储账户的密钥目录有交叉读写权限,导致密钥文件被互相覆盖。
  • 应用服务计划资源不足:两个应用在同一服务计划下运行,资源竞争导致密钥备份/解密流程异常。
  • 未遵循平台最佳实践:Function App要求使用专用存储账户,共享存储是此类密钥问题的常见诱因。

解决步骤

  • 拆分存储账户:为每个Function App分配独立的存储账户,彻底避免密钥存储目录的共享。
  • 重置密钥存储状态:
    1. 停止两个Function App。
    2. 登录存储账户,找到对应文件共享中的.azurefunctions/secrets目录,删除其中所有文件。
    3. 重新启动Function App,平台会自动生成新的密钥和合法的备份文件。
  • 配置权限隔离:确保每个Function App的托管身份仅对自身存储账户有读写权限,避免交叉访问。
  • 禁止手动修改密钥文件:Function App的密钥存储由平台自动管理,手动操作会破坏一致性,引发不可预测的问题。

官方参考依据

  • Azure Functions平台要求:每个Function App必须使用专用的存储账户,共享存储会导致密钥管理、触发器等核心功能异常。
  • 密钥加密机制:Function App使用自身的服务加密密钥对存储的密钥备份进行加密,跨应用无法解密对方的备份文件。

内容的提问来源于stack exchange,提问作者Sushrut Paranjape

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 16:42:48