连接到Azure Service Bus队列

时间:2013-02-08 21:26:42

标签: azure servicebus azureservicebus

我正在开发我的第一个Azure实现,我已经设置了我的azure帐户,我使用NuGet安装适当的DLL并配置到我的应用程序。当我将我的WCF客户端设置为指向服务总线队列并运行该方法时,我得到以下异常:

  

Microsoft.ServiceBus.ServerErrorException

   at Microsoft.ServiceBus.RelayedSocketInitiator.Connect(Uri uri, TimeSpan timeout)
   at Microsoft.ServiceBus.ConnectivityModeConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
   at Microsoft.ServiceBus.Channels.BufferedConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
   at Microsoft.ServiceBus.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
   at Microsoft.ServiceBus.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at Microsoft.ServiceBus.Channels.LayeredChannel`1.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

我的端点配置是:

<endpoint address="sb://MyService.servicebus.windows.net/MyServicequeue"
                binding="netTcpRelayBinding" contract="PaperlessImportServiceWCF.PaperlessImportServiceSoap"
                name="MyServiceServiceSoap"  behaviorConfiguration="sbTokenProvider"/>

我的endpoint行为是:                                                                        

错误消息非常通用,我不确定我应该首先看看它是什么

1 个答案:

答案 0 :(得分:2)

我认为您对中继服务的工作方式存在一些误解。从您显示的配置中,您正在使用NetTcpRelayBinding,它用于请求重播连接。但是,在您的端点中,您似乎正在使用队列地址作为端点。

a)如果您打算以请求 - 回复方式使用服务/客户端,则需要创建服务总线中继端点,并在端点中使用该地址。 This tutorial是此servicebus功能的良好起点。

b)如果您打算使用队列,则需要NetMessagingBinding。 This post是如何执行上述方案的良好起点。

在任何一种情况下,您似乎都在使用错误的基址。 'myservice'是servicebus名称空间的名称吗?如果不是,那么您应该用名称空间的名称替换它。基本服务总线地址的格式为:protocol://YOUR_NAMESPACE.servicebus.windows.net