0

今から完全に機能する wsHttpBinding サービスを使用しています。私の WPF アプリケーション (クライアント) はそれに接続され、15 秒ごとにサーバーから情報を自動的に受信します。

クライアントが次の例外を受け取る場合があることに気付きました (たまに、問題がない日もあります)。

System.ServiceModel.ProtocolException: The content type text/html; charset=utf-8 of the response message does not match the content type of the binding (application/soap+xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 1024 bytes of the response were: '<html>
    <head>
        <title>  </title>
        <script type="text/javascript">
        function bredir(d,u,r,v,c){var w,h,wd,hd,bi;var b=false;var p=false;var s=[[300,250,false],[250,250,false],[240,400,false],[336,280,false],[180,150,false],[468,60,false],[234,60,false],[88,31,false],[120,90,false],[120,60,false],[120,240,false],[125,125,false],[728,90,false],[160,600,false],[120,600,false],[300,600,false],[300,125,false],[530,300,false],[190,200,false],[470,250,false],[720,300,true],[500,350,true],[550,480,true]];if(typeof(window.innerHeight)=='number'){h=window.innerHeight;w=window.innerWidth;}else if(typeof(document.body.offsetHeight)=='number'){h=document.body.offsetHeight;w=document.body.offsetWidth;}for(var i=0;i<s.length;i++){bi=s[i];wd=Math.abs(w-bi[0]);hd=Math.abs(h-bi[1]);if(wd<=2&&hd<=2){b=true;p=bi[2];}}if(b||(w<100&&w!==0)||(h<100&&h!==0)){if(p&&self==parent){self.close();return;}return'/b'+'anner.php?w='+w+'&h='+h+'&d='+d+'&u='+u+'&r='+r+'&view='+v;}else{return c;}}
        </script>
    </head>
    <body onLoad="window.l'.

Server stack trace: 
   at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding)
   at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ClientReliableChannelBinder`1.RequestClientReliableChannelBinder`1.OnRequest(TRequestChannel channel, Message message, TimeSpan timeout, MaskingMode maskingMode)
   at System.ServiceModel.Channels.ClientReliableChannelBinder`1.Request(Message message, TimeSpan timeout, MaskingMode maskingMode)
   at System.ServiceModel.Security.SecuritySessionClientSettings`1.SecurityRequestSessionChannel.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)

この問題をどこで修正するかについて何か考えがありますか?

ありがとう、カミーユ。

4

2 に答える 2

1

接続しているサービスに問題があり、HTML エラー ページが表示される場合があると思います。これは、404 Page Not Found または 503 Service Unavailable または 500 Internal Server Error である可能性があります。

于 2011-05-11T04:03:34.963 に答える
0

これは、セキュリティ ネゴシエーションに関連しているようです。セキュリティ コンテキストがキャッシュされている可能性があります。そのため、セッションが期限切れになると、セキュリティ コンテキストは無効になりますが、引き続き渡そうとします。これを確認し、毎回接続を閉じていることを確認する必要がある場合があります。

そして、再試行ルーチンを実装しなければならない場合があります (その通信例外をキャッチするためのクライアント コード。これが発生すると、現在の Client オブジェクトを破棄して新しいオブジェクトを作成します (再試行のようなもの)。私のクライアント。

これが役立つことを願っています。

乾杯、ワーグナー。

于 2011-05-11T03:51:33.803 に答える