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

.NET Core3.1升级至.NET6.0后Function App EventHub触发器报错

.NET6 Azure Function EventHub触发器升级问题解决

问题本质分析

你遇到的两个错误核心是旧版EventHubs SDK与.NET6 Azure Functions运行时不兼容,同时新环境对连接字符串的校验规则更严格:

  • 第一个报错:升级后运行时不允许连接字符串中包含EntityPath的同时,又在触发器配置里显式指定EventHub名称,两者二选一即可。
  • 第二个报错:旧版Microsoft.Azure.EventHubs系列包在.NET6环境下存在兼容性问题,导致无法正确定位EventHub实体。

解决方案步骤

1. 替换旧版EventHubs NuGet包

移除现有旧包,安装适配.NET6的新版Azure EventHubs SDK:

<!-- 移除以下旧包 -->
<PackageReference Include="Microsoft.Azure.EventHubs" Version="4.3.2" />
<PackageReference Include="Microsoft.Azure.EventHubs.Processor" Version="4.1.0" />

<!-- 添加新版适配包 -->
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="5.11.0" />
<PackageReference Include="Azure.Messaging.EventHubs" Version="5.11.1" />

注:Microsoft.Azure.Functions.Extensions可保留,建议升级到1.3.0以适配.NET6环境。

2. 调整触发器代码与配置

触发器代码示例(兼容.NET6 In-Proc/隔离进程模式)

确保触发器的EventHubName单独配置,连接字符串不含EntityPath:

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

public class EventHubTriggerFunction
{
    [FunctionName("CCCCXXX")]
    public void Run(
        [EventHubTrigger("%EventHubName%", Connection = "EventHubConnectionString")] string[] events,
        ILogger log)
    {
        foreach (var message in events)
        {
            log.LogInformation($"处理EventHub消息: {message}");
        }
    }
}

配置文件(local.settings.json或Azure门户配置)

  • EventHubConnectionString:使用不带EntityPath的命名空间连接字符串,格式示例:Endpoint=sb://xxxxxxyyyyyy-02.servicebus.windows.net/;SharedAccessKeyName=xxx;SharedAccessKey=xxx
  • EventHubName:单独配置你的EventHub实体名称(如eventhubname)

3. 验证实体存在性

确认Azure门户中,指定的命名空间xxxxxxyyyyyy-02.servicebus.windows.net下确实存在名为eventhubname的EventHub实体,检查名称拼写(区分大小写)是否完全一致。

内容的提问来源于stack exchange,提问作者Geethan Regunathan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:25:39