2016-11-23 7 views
3

thisチュートリアルに続いて、それが10〜15%の間のどこかで正しく動作するように管理しています。サービスバスWCFリレー "データの送信中にエラーが発生しました。"

これは、例外が発生するクライアントのための私の主な方法です。

static void Main(string[] args) 
     { 
      Console.WriteLine("Client start..."); 
      ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Tcp; 

      string serviceNamespace = "nameSpaceFromAzure"; 
      //Console.Write("Your SAS Key: "); 
      string sasKey = "myKeyFromAzure=";//Console.ReadLine(); 

      Uri serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", serviceNamespace, "EchoService"); 

      TransportClientEndpointBehavior sasCredential = new TransportClientEndpointBehavior(); 
      sasCredential.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", sasKey); 

      ChannelFactory<IEchoChannel> channelFactory = new ChannelFactory<IEchoChannel>("RelayEndpoint", new EndpointAddress(serviceUri)); 

      channelFactory.Endpoint.Behaviors.Add(sasCredential); 

      IEchoChannel channel = channelFactory.CreateChannel(); 
      channel.Open(); 

      Console.WriteLine("CLIENT-Enter text to echo (or [Enter] to exit):"); 
      string input = Console.ReadLine(); 
      while (input != String.Empty) 
      { 
       try 
       { 
        Console.WriteLine("Server echoed: {0}", channel.Echo(input)); 
       } 
       catch (Exception e) 
       { 
        Console.WriteLine("Error: " + e.Message); 
       } 
       input = Console.ReadLine(); 
      } 

      channel.Close(); 
      channelFactory.Close(); 

     } 

私は時々これが動作するための名前空間とキーが正しく、入力されている知っています。しかし、ほとんどの場合、この例外が発生します

System.ServiceModel.CommunicationException was unhandled 
    HResult=-2146233087 
    Message=An error occurred while transmitting data. 
    Source=mscorlib 
    StackTrace: 
    Server stack trace: 
     at Microsoft.ServiceBus.ClientWebSocketConnection.EndRead() 
     at Microsoft.ServiceBus.SocketMessageHelper.ReadBytesAsyncResult.ReadComplete(Boolean calledSynchronously) 
    Exception rethrown at [0]: 
     at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
     at Microsoft.ServiceBus.SocketMessageHelper.ReceiveMessageAsyncResult.<>c__DisplayClass12_0.<GetAsyncSteps>b__3(ReceiveMessageAsyncResult thisPtr, IAsyncResult r) 
     at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result) 
    Exception rethrown at [1]: 
     at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
     at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.RunSynchronously() 
     at Microsoft.ServiceBus.SocketMessageHelper.ReceiveMessage(IConnection connection, TimeSpan timeout) 
     at Microsoft.ServiceBus.WebSocketConnectionInitiator.SendRelayedConnectAndReceiveResponse(ClientWebSocketConnection connection, TimeoutHelper timeoutHelper) 
     at Microsoft.ServiceBus.WebSocketConnectionInitiator.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) 
     at System.ServiceModel.Channels.CommunicationObject.Open() 
    Exception rethrown at [2]: 
     at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
     at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
     at System.ServiceModel.ICommunicationObject.Open() 
     at Microsoft.ServiceBus.Samples.Program.Main(String[] args) in C:\Users\xpto\Documents\Visual Studio 2015\Projects\EchoService\EchoClient\Program.cs:line 38 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 
     HResult=-2146232800 
     Message=More data was expected, but EOF was reached. 
     Source=Microsoft.ServiceBus 
     StackTrace: 
     Server stack trace: 
     Exception rethrown at [0]: 
      at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) 
      at Microsoft.ServiceBus.ServiceBusClientWebSocket.EndReceive(IAsyncResult result) 
      at Microsoft.ServiceBus.ClientWebSocketConnection.EndRead() 
     InnerException: 
      HResult=-2146233087 
      Message=ServiceBusClientWebSocket was expecting more bytes 
      InnerException: 

私は間違って何をしていますか?

答えて

1

このチュートリアルでは、「複数のスタートアッププロジェクト」が提案されていますが、それが原因です。私がサービスを開始し、コンソール出力がクライアントを起動した後、すべてが期待通りに機能しました。

関連する問題