我正在开发我的第一个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
行为是:
错误消息非常通用,我不确定我应该首先看看它是什么
答案 0 :(得分:2)
我认为您对中继服务的工作方式存在一些误解。从您显示的配置中,您正在使用NetTcpRelayBinding,它用于请求重播连接。但是,在您的端点中,您似乎正在使用队列地址作为端点。
a)如果您打算以请求 - 回复方式使用服务/客户端,则需要创建服务总线中继端点,并在端点中使用该地址。 This tutorial是此servicebus功能的良好起点。
b)如果您打算使用队列,则需要NetMessagingBinding。 This post是如何执行上述方案的良好起点。
在任何一种情况下,您似乎都在使用错误的基址。 'myservice'是servicebus名称空间的名称吗?如果不是,那么您应该用名称空间的名称替换它。基本服务总线地址的格式为:protocol://YOUR_NAMESPACE.servicebus.windows.net