【发布时间】:2017-07-21 11:58:04
【问题描述】:
我正在尝试开始使用 Azure 服务总线队列。按照这篇文章
https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues
唯一的区别是我试图从 web api 中执行此操作。
我得到的错误是:
无法连接,因为目标机器主动拒绝 40.84.xxx.xx:443
如果有任何帮助或指点,我将不胜感激!
注意:控制台应用程序可以按照上述指南正常工作。
7/24 更新,这是我的操作方法中的代码:
try
{
var connectionString =
"Endpoint=sb://xxxxx-test.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=shared_access_key";
var queueName = "testqueue1";
var client =
QueueClient.CreateFromConnectionString(connectionString, queueName);
var message = new BrokeredMessage(eventMessage);
client.Send(message);
}
catch (Exception e)
{
//log exception
}
7/25 更新。我可以通过在 web.config 中将 defaultConfig 条目设置为启用来使其工作:
<system.net>
<defaultProxy enabled="true"/>
</system.net>
【问题讨论】:
-
@Maxime 如果这是一个网络问题或防火墙问题,控制台应用程序也应该得到同样的错误 - 事实并非如此。
-
@the_sheikh 创建客户端是一项昂贵的操作。您应该考虑更改您的代码以使客户端保持更长时间。
-
除此之外,您的代码看起来还不错。就像其他人指出的那样,这是一个基础设施问题。
-
@SeanFeldman 您是否建议保持 QueueClient 实例静态,例如 httpClient?在 web.config 中添加 defaultProxy 条目后,我的 azure 代码工作。我仍在试图弄清楚为什么在控制台应用程序的情况下不需要这样做。
标签: c# azureservicebus servicebus azure-servicebus-queues