【问题标题】:Azure Website Connection to a ServiceBus Queue remote name could not be resolved无法解析到 ServiceBus 队列远程名称的 Azure 网站连接
【发布时间】:2014-11-26 09:33:57
【问题描述】:

我有一个尝试连接到服务总线队列的简单 Azure 网站(PaaS 网站)。但是,它得到了错误:

[WebException:无法解析远程名称: 'XXXXXXXXX-sb.accesscontrol.windows.net']
System.Net.HttpWebRequest.GetRequestStream(TransportContext& 上下文) +6543605 System.Net.HttpWebRequest.GetRequestStream() +13 Microsoft.ServiceBus.TokenProviderHelper.GetAccessTokenCore(Uri requestUri,字符串 applyTo,字符串 requestToken,字符串 simpleAuthAssertionFormat、TimeSpan 超时、String& expiresIn、 字符串和观众)+617

关于如何解决此错误的任何想法?这看起来像是一个权限问题,但我是 Azure 的新手,我不知道如何解决它。它使用具有管理、发送和侦听权限的服务总线“RootManageSharedAccessKey”。

我还有一个可以访问队列的工作角色设置,所以我知道队列在那里。我还可以使用 Visual Studio 将测试消息发送到队列并由工作人员接收。我只是无法让前端 azure 网站访问它。

【问题讨论】:

    标签: c# azure message-queue servicebus


    【解决方案1】:

    您最近是否从 azure 门户创建了新的服务总线命名空间?进行了更改,默认身份验证机制是 SAS,并且没有自动配置 ACS 命名空间。

    请参考这篇博客,里面有关于这个问题的详细信息http://blogs.msdn.com/b/servicebus/archive/2014/09/03/change-to-azure-service-bus-portal-default-authentication-mechanism-for-service-bus-namespaces-now-sas.aspx

    【讨论】:

    • 我在旧门户中创建了命名空间。我可以连接到辅助角色中的队列以从中提取消息,但是当我尝试从 Azure 网站访问它时出现上述错误。
    • 这肯定与您提供的链接有关,我会进一步研究。
    • 我最终改变了连接到服务总线的方式。
    【解决方案2】:

    我更改了连接到服务总线的方式。该问题与未将正确的值传递给 NamespaceManager 有关。我最终使用以下连接到服务总线:

        // By default when connecting to the queue we will look at the appSettings for they key "Microsoft.ServiceBus.ConnectionString"
        //
        //  <appSettings>
        //    <add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://XXXXXXXXXX.servicebus.windows.net;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXXXXXXXXXXXXX" />
        //  </appSettings>
        //
        public TachyonQueueClient(String queueName, String appSettingKey = "Microsoft.ServiceBus.ConnectionString")
        {
            name = queueName;
    
            string connectionString = CloudConfigurationManager.GetSetting(appSettingKey);
            namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
            if (!namespaceManager.QueueExists(queueName))
            {
                namespaceManager.CreateQueue(queueName);
            }
    
            // Initialize the connection to Service Bus Queue
            client = QueueClient.CreateFromConnectionString(connectionString, queueName);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 2021-09-08
      • 1970-01-01
      • 2016-05-31
      • 2013-05-13
      相关资源
      最近更新 更多