我有一个WCF服务,它在本地工作,之前在一个单独的服务器上工作(在稍作修改之前)。它现在抛出一个“无法识别的消息版本”CommunicationException。可能导致这种情况的原因是什么?
在排除故障时,我发现它在服务器上的WCF“魔法”内某处发生,然后才解析使用为其定义的自定义绑定。
服务器本身最近已经对它进行了一些修改以添加SSL并更改主机名,所以我想知道在IIS(7.5)找到服务和我的代码被调用之间是否存在特定于服务器的事情。
我的服务继承自一个基类,该基类包含一个简单的Ping方法,一旦联系就返回成功。这适用于所有其他内部服务器部署,但即使调用此方法现在也会提供无法识别的消息版本。
调用代码只使用VS生成的服务引用来创建实例,然后调用它:
var MyService = new MyNamespace.MyServiceClient();
var result = MyService.Ping();
更新 堆栈跟踪(没有InnerException存在)让我想知道它是否与SOAP相关:
Server stack trace:
at System.ServiceModel.Channels.ReceivedMessage.ReadStartEnvelope(XmlDictionaryReader reader)
at System.ServiceModel.Channels.BufferedMessage..ctor(IBufferedMessageData messageData, RecycledMessageState recycledMessageState, Boolean[] understoodHeaders, Boolean understoodHeadersModified)
at System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.ReadMessage(ArraySegment`1 buffer, BufferManager bufferManager, String contentType)
at System.ServiceModel.Channels.MessageEncoder.ReadMessage(Stream stream, BufferManager bufferManager, Int32 maxBufferSize, String contentType)
at System.ServiceModel.Channels.HttpInput.ReadChunkedBufferedMessage(Stream inputStream)
at System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(Exception& requestException)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Lenderprise.WebServiceHost.Test.LLSSTitleSearch.ITitleSearch.Ping()
at Lenderprise.WebServiceHost.Test.LLSSTitleSearch.TitleSearchClient.Ping() in D:\LLN\DEV\LenderPrise\WebServices\TitleSearchWebServiceHost.Test\Service References\LLSSTitleSearch\Reference.cs:line 138
at Lenderprise.MainWindow.RunAsLibraryButton_Click(Object sender, RoutedEventArgs e) in D:\LLN\DEV\LenderPrise\WebServices\TitleSearchWebServiceHost.Test\MainWindow.xaml.cs:line 91
任何建议?
答案 0 :(得分:0)
这里的一个非常小众的案例:我们有一个负载均衡器(F5),它也管理SSL证书。进入的请求看起来正确地转发到服务器,但也重定向回自身。我不是网络工程师,知道所有细节,但它是F5配置而不是WCF。