0

ローカルで動作し、以前は(マイナーな変更の前に)別のサーバーで動作していた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

助言がありますか?

4

1 に答える 1

0

ここではかなりニッチなケースです。SSL証明書も管理するロードバランサー(F5)があります。入ってくるリクエストはサーバーに正しく転送されているように見えましたが、それ自体にもリダイレクトされていました。私はすべての詳細を知るのに十分なネットワークエンジニアではありませんが、それはWCFではなくF5構成でした。

于 2012-12-05T17:53:55.543 に答える