gpt4 book ai didi

c# - 服务总线 WCF 中继 "An error occurred while transmitting data."

转载 作者:行者123 更新时间:2023-11-30 17:35:40 27 4
gpt4 key购买 nike

我关注了this教程并设法让它在 10% 到 15% 的时间内正常工作。

这是我为客户端提供的 Main 方法,其中发生了异常:

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();

}

我知道命名空间和 key 输入正确,因为有时这有效。然而,大多数时候,我都会遇到这个异常

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:

我做错了什么?

最佳答案

事实证明,教程建议“多个启动项目”,这就是该行为的原因。当我启动服务并在控制台输出启动客户端后,一切都按预期工作。

关于c# - 服务总线 WCF 中继 "An error occurred while transmitting data.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40767403/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com