首页 文章

无法解析Azure网站与ServiceBus队列远程名称的连接

提问于
浏览
3

我有一个简单的Azure网站(PaaS网站),它试图连接到Service Bus队列 . 但是,它收到了错误:

[WebException:无法解析远程名称:'XXXXXXXXX-sb.accesscontrol.windows.net'] System.Net.HttpWebRequest.GetRequestStream(TransportContext&context)6543605 System.Net.HttpWebRequest.GetRequestStream()13 Microsoft.ServiceBus . TokenProviderHelper.GetAccessTokenCore(Uri requestUri,String applyTo,String requestToken,String simpleAuthAssertionFormat,TimeSpan timeout,String&expiresIn,String&audience)617

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

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

2 回答

  • 2

    您最近是否从azure portal创建了一个新的服务总线命名空间?在默认身份验证机制为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

  • 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);
        }
    

相关问题