Azure Service Bus连接异常求助:Azure函数发送消息失败
错误信息
Executed 'SendMsg_HttpTrigger' (Failed, Id=37c685cb-51b5-41ca-9d58-786508099c9b, Duration=78ms)
[2023-12-18T01:14:24.257Z] System.Private.CoreLib: Exception while executing function: SendMsg_HttpTrigger. System.Net.WebSockets.Client: Unable to connect to the remote server. System.Net.Http: The requested name is valid, but no data of the requested type was found. (alz-csp-sbus.servicebus.windows.net:443). System.Net.Sockets: The requested name is valid, but no data of the requested type was found.
排查及修复步骤
验证Service Bus域名准确性
确认配置中的Service Bus域名alz-csp-sbus.servicebus.windows.net完全正确,排查拼写、大小写(Azure域名不区分大小写,但需避免输入失误)等问题。测试DNS解析能力
在函数运行环境执行DNS查询命令:nslookup alz-csp-sbus.servicebus.windows.net若无法解析出IP地址,说明存在DNS配置异常:
- 本地调试时,检查本地DNS服务器设置;
- Azure部署环境,确认函数所在网络的DNS配置正常,同时验证Service Bus命名空间是否已成功创建并处于运行状态。
检查网络出站规则
- 本地调试:确认本地防火墙、代理服务器允许443端口访问目标Service Bus域名,可尝试用浏览器访问
https://alz-csp-sbus.servicebus.windows.net,验证能否正常加载Service Bus元数据页面。 - Azure部署:检查函数所属App Service计划的网络配置,确认VNet集成、出站防火墙规则是否允许访问
ServiceBus服务标签;同时查看Service Bus命名空间的防火墙设置,确认已放行函数的IP地址或所属VNet。
- 本地调试:确认本地防火墙、代理服务器允许443端口访问目标Service Bus域名,可尝试用浏览器访问
确认Service Bus命名空间状态
登录Azure门户,查看alz-csp-sbus命名空间的状态是否为运行中,排除暂停、删除等异常状态。校验无密码身份配置
由于使用无密码方式,需确认:- 函数的托管标识(系统/用户分配)已被授予Service Bus的Azure Service Bus Data Sender角色权限;
- 代码或配置中填写的命名空间名称无错误。
切换传输模式测试
默认SDK可能使用WebSockets传输,尝试强制切换为AMQP TCP模式,修改代码中的客户端配置:var client = new ServiceBusClient("<namespace-endpoint>", new DefaultAzureCredential(), new ServiceBusClientOptions { TransportType = ServiceBusTransportType.AmqpTcp });测试是否能正常发送消息,排除WebSockets的网络限制问题。
内容的提问来源于stack exchange,提问作者R.A 1

