从web api向azure服务总线队列发送消息

时间:2017-07-21 11:58:05

标签: c# azureservicebus servicebus azure-servicebus-queues

我正在尝试使用Azure Service Bus队列。遵循这篇文章 https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues 唯一的区别是我试图在网络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>

2 个答案:

答案 0 :(得分:1)

  

无法建立连接,因为目标计算机主动拒绝它40.84.xxx.xx:443

请检查出站443端口是否被防火墙阻止。

  

注意:控制台应用程序可以按照上述指南正常工作。

Service Bus的连接模式的默认值是AutoDetect。它将根据自动检测机制自动选择Tcp和Http模式,该机制探测连接选项是否可用于当前网络环境。它可能为您的Console App和Web API应用程序选择不同的模式。在使用服务总线队列之前,尝试在Web API应用程序中明确地将其设置为TCP。

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Tcp;

答案 1 :(得分:1)

我能够通过在web.config中设置defaultConfig条目来使其工作:

<system.net>
  <defaultProxy enabled="true"/>
</system.net>