升级EventHubs相关包后函数触发报错的原因与解决咨询
EventHubs函数升级后连接配置错误的原因及解决方法
一、低版本不报错的原因
旧版Microsoft.Azure.Functions.Worker.Extensions.EventHubs(4.3.0)依赖已弃用的Microsoft.Azure.EventHubs SDK,该SDK对连接配置的校验较为宽松:当连接字符串包含EntityPath且代码显式指定EventHubName时,SDK会自动优先使用代码中指定的名称,忽略连接字符串里的EntityPath,因此不会触发错误。
升级后的5.1.0版本基于新的Azure.Messaging.EventHubs SDK,这个SDK做了更严格的参数合法性校验,明确禁止同时通过连接字符串的EntityPath和代码显式参数两种方式指定Event Hub路径,因此抛出了参数错误。
二、解决方法
两种可行方案二选一即可:
方案1:移除连接字符串中的EntityPath
修改EventhubConnection配置值,删除末尾的;EntityPath=xxx部分。例如:
- 原连接字符串:
Endpoint=sb://xxx.servicebus.windows.net/;SharedAccessKeyName=xxx;SharedAccessKey=xxx;EntityPath=your-eventhub - 修改后:
Endpoint=sb://xxx.servicebus.windows.net/;SharedAccessKeyName=xxx;SharedAccessKey=xxx
代码保持现有EventHubTrigger配置不变,依然显式指定EventhubName参数。
方案2:移除代码中显式指定的EventHubName
修改函数的EventHubTrigger属性,删除第一个参数(显式的Event Hub名称),保留连接字符串中的EntityPath。修改后的代码如下:
[FunctionName("FilterFunctionEventhubTrigger")] public async Task Run( [EventHubTrigger( Connection = "EventhubConnection", ConsumerGroup = "%ConsumerGroup%")] EventData[] events, ILogger log) { ... }
内容的提问来源于stack exchange,提问作者yoyo
相关产品推荐
相关产品推荐

