azure - 第一次调用 Microsoft.Azure.ServiceBus.Core.MessageSender.SendAsync 超时,后续调用不会
问题描述
我编写了一些代码来与 azure 服务总线通信。它将消息发送到队列。它在一个针对 .net 标准 2.0 的项目中
当我从 .net 核心终端应用程序运行它时,它运行良好。但是,当从 .net framework 4.7.2 项目调用相同的代码时,第一次尝试发送消息会在 30 到 90 秒后导致以下异常:
"The remote party closed the WebSocket connection without completing the close handshake."
但是任何进一步的消息都将毫无问题地发送。
// This is using Microsoft.Azure.ServiceBus, if that makes any difference...
MessageSender MessageSender = new MessageSender(ConnectionString, SendQueueName;
try
{
await MessageSender.SendAsync(new Message(Encoding.UTF8.GetBytes("Test that won't work")));
}
catch(Exception e)
{
// Error will be caught here:
// "The remote party closed the WebSocket connection without completing the close handshake."
}
await MessageSender.SendAsync(new Message(Encoding.UTF8.GetBytes("Test that will work")));
有谁知道为什么第一次通话失败?以及如何让它不失败?还是更快地失败?我尝试更改 OperationTimeout 和 RetryPolicy,但它们似乎没有任何效果。
解决方案
这些第一个连接是通过端口 5671/56712 进行的,趋势防病毒软件会拦截该端口。一旦这些超时,框架就会回退到使用 443,它工作正常。
我们尝试关闭趋势并运行测试连接及其几乎是即时的。
推荐阅读
- angular - 在 Angular 上处理导入模块的“路由”
- yum - RHEL 7 上的 Yum install graphviz 失败,并显示“没有可用的包 graphviz”。
- java - 扩展压缩字符串
- android - RecyclerView 中只显示一项
- typescript-typings - 增加一个接口来移除索引器
- javascript - 为仪表板选择多行数据
- c# - 如何模拟发布请求?
- javascript - Recharts Line activeDot 函数会破坏工具提示?
- r - geom_bar & 多个变量
- python - AWS Lambda:使用 Python 从 s3 存储桶中读取 csv 文件尺寸,而不使用 Pandas 或 CSV 包