.NET接口无法向Service Bus队列发消息,报Connection Reset错误
排查与解决步骤
1. 检查网络防火墙与代理
即使使用AMQP WebSockets(443端口),仍需确认:
- 服务器/客户端所在网络允许出站到Service Bus端点的443端口流量
- 若使用代理,需在
ServiceBusClientOptions中配置代理信息:var clientOptions = new ServiceBusClientOptions { TransportType = ServiceBusTransportType.AmqpWebSockets, Proxy = new WebProxy("http://your-proxy-address:port") };
2. 验证Service Bus权限
确认使用的身份凭证具备发送权限:
- 若用连接字符串,需对应
Send或Manage级别的Shared Access Policy - 若用Azure AD身份验证,确保服务主体/托管标识被分配
Azure Service Bus Data Sender角色
3. 升级Service Bus SDK版本
旧版Azure.Messaging.ServiceBus NuGet包可能存在已知连接问题,升级到最新稳定版。
4. 优化重试策略
当前自定义重试仅捕获ServiceBusException,连接重置可能触发其他网络异常,建议改用SDK内置重试策略:
var clientOptions = new ServiceBusClientOptions { TransportType = ServiceBusTransportType.AmqpWebSockets, RetryOptions = new ServiceBusRetryOptions { MaxRetries = 3, Delay = TimeSpan.FromSeconds(2), MaxDelay = TimeSpan.FromSeconds(10), Mode = ServiceBusRetryMode.Exponential } };
同时移除自定义的for循环重试逻辑,让SDK自动处理重试场景。
5. 检查Service Bus配额与SKU
- 确认命名空间未达到消息发送速率配额
- 基础版SKU存在功能限制,若使用分区、会话等功能需确认SKU支持
6. 本地环境测试
在本地运行代码验证是否能正常发送,排除生产服务器网络环境问题。
内容的提问来源于stack exchange,提问作者Harish K
相关产品推荐
相关产品推荐

