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

在Visual Studio中使用Azure Event Hub发消息遇SocketException求助

解析System.Net.Sockets.SocketException: 'No such host is known'异常

这个错误本质上是DNS解析失败——你的应用程序无法找到Azure Event Hub服务对应的主机地址,下面是几个最可能的原因和排查方向:

1. 连接字符串/Event Hub名称还是占位符(最常见原因)

看你的代码里用的是{EHCONNECTIONSTRING}和{EVENTHUBNAME}这两个占位符,这肯定是不行的!你需要把它们替换成Azure门户里获取到的真实信息:

  • 连接字符串要从Event Hub命名空间的共享访问策略里复制(比如RootManageSharedAccessKey对应的连接字符串),格式应该是:Endpoint=sb://<你的命名空间>.servicebus.windows.net/;SharedAccessKeyName=...;SharedAccessKey=...
  • EhEntityPath必须是你在该命名空间下创建的真实Event Hub名称,大小写敏感哦。

2. Event Hub命名空间拼写错误或已删除

如果连接字符串里的命名空间名称写错了,或者这个命名空间已经被删除,DNS自然找不到对应的主机地址。你可以登录Azure门户,确认命名空间的名称是否正确,以及资源状态是否为“运行中”。

3. 网络环境限制

如果你的应用运行在公司内网或者受限制的网络环境中,可能存在以下情况:

  • 防火墙/代理服务器阻止了DNS查询请求,导致无法解析.servicebus.windows.net域名
  • 网络策略禁止访问Azure Service Bus的服务地址

你可以先在本地用nslookup <你的命名空间>.servicebus.windows.net命令测试一下,看能否正常解析出IP地址。如果解析失败,就得联系网络管理员调整规则了。

4. 代码初始化问题(补充)

你的代码里只写了Main方法,但缺少MainAsync的实现——要记得初始化EventHubClient才能正常发送消息。这里给你补全一个完整的示例:

namespace EventGenerator 
{ 
    using System; 
    using System.Text; 
    using System.Threading.Tasks; 
    using Microsoft.Azure.EventHubs; 

    public class Program 
    { 
        private static EventHubClient eventHubClient; 
        // 替换为真实的连接字符串
        private const string EhConnectionString = "Endpoint=sb://your-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=your-access-key-here"; 
        // 替换为真实的Event Hub名称
        private const string EhEntityPath = "your-event-hub-name"; 

        public static void Main(string[] args) 
        { 
            MainAsync(args).GetAwaiter().GetResult(); 
        }

        private static async Task MainAsync(string[] args)
        {
            try
            {
                // 初始化EventHubClient
                eventHubClient = EventHubClient.CreateFromConnectionString(EhConnectionString, EhEntityPath);
                
                // 构造并发送消息
                var messageContent = Encoding.UTF8.GetBytes("Test message to Event Hub");
                await eventHubClient.SendAsync(new EventData(messageContent));
                
                Console.WriteLine("Message sent successfully!");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: {ex.Message}");
            }
            finally
            {
                await eventHubClient?.CloseAsync();
            }
        }
    } 
}

先从替换占位符开始排查,这大概率能解决你的问题,如果还是不行,再检查网络和Azure资源状态~

内容的提问来源于stack exchange,提问作者Shyam V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 08:53:03