问题描述
新部署Azure Funciton代码,遇见无法加载 “Microsoft.Azure.WebJobs.ParameterBindingData” 问题
错误消息:Microsoft.Azure.WebJobs.Extensions.ServiceBus: Could not load type 'Microsoft.Azure.WebJobs.ParameterBindingData' from assembly 'Microsoft.Azure.WebJobs, Version=3.0.32.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
错误截图:
问题解答
根据对全网中同类错误的搜索,得知这是Azure Function App的Bug :“ParameterBindingData
” 需要在Function Host runtime v4.15之上的版本才能远行。
所以两种方式来缓解此问题:
方式一:降低 Microsoft.Azure.WebJobs.Extensions.ServiceBus 的版本( 5.4.0 )
方式二:升级 Function App Runtime 到最新版,并且把 Microsoft.Azure.WebJobs.Extensions.ServiceBus 也同时升级到最新版本 (5.12.0 或以上)
参考资料
"Could not load type 'Microsoft.Azure.WebJobs.ParameterBindingData'" #1665 : https://github.com/Azure/azure-functions-dotnet-worker/issues/1665
[BUG] Function App crashes on startup with error "Could not load type 'Microsoft.Azure.WebJobs.ParameterBindingData'" #34467 : https://github.com/Azure/azure-sdk-for-net/issues/34467
附录:查看Azure Function的Runtime Version和如何修改它
查看Azure Function Runtime Version, 在 Function Overview页面中的 Runtime Version部分显示,如下图:
修改Function Runtime Version可以通过修改配置参数 FUNCTIONS_EXTENSION_VERSION 来实现:https://docs.azure.cn/zh-cn/azure-functions/functions-app-settings#functions_extension_version
托管函数应用的 Functions 运行时版本。 波浪符(~)加主要版本号表示使用该主要版本的最新版本(例如 ~4)。 当同一主要版本的新版本可用时,会自动在函数应用中安装新版本。 要将应用固定为特定版本,请使用完整版本号(例如 4.26.0.0)