2010-12-11 8 views
1

WCFサービスライブラリを作成しました。私はテスト関数を作成し、私はWCFテストクライアントからテスト関数を呼び出しました。私はコードにブレークポイントを入れました。コントロールはブレークポイントに達し、そこで停止します。今すぐコントロールをブレークポイントにしておいて、約1分後に次のエラーメッセージが表示されるタイムアウトエラーを示すWCF

"サービスがオフラインまたはアクセスできない:クライアント側の構成プロキシと一致しません;既存のプロキシは無効です。詳細はスタックトレースを参照してください。新しいプロキシを開始したり、デフォルト設定に復元したり、サービスを更新したりして、回復を試みることができます。

エラーの詳細: 00:00:59.9843750以降の応答を待っている間にリクエストチャネルがタイムアウトしました。呼び出しに渡されたタイムアウト値をRequestに増やすか、BindingでSendTimeout値を増やします。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。

サーバースタックトレース:System.ServiceModel.Channels.ClientReliableChannelBinder 1.RequestClientReliableChannelBinder 1.OnRequest(TRequestChannelチャンネル、メッセージのメッセージ、のTimeSpanタイムアウト、MaskingModeでSystem.ServiceModel.Channels.RequestChannel.Request(メッセージのメッセージ、のTimeSpanタイムアウト) でSystem.ServiceModelでSystem.ServiceModel.Security.SecuritySessionClientSettings`1.SecurityRequestSessionChannel.Request(メッセージのメッセージ、のTimeSpanタイムアウトでSystem.ServiceModel.Channels.ClientReliableChannelBinder 1.Request(Message message, TimeSpan timeout, MaskingMode maskingMode) at System.ServiceModel.Channels.ClientReliableChannelBinder 1.Request(メッセージのメッセージ、のTimeSpanタイムアウト) でmaskingMode) ) 。 Dispatcher.RequestChannelBinder.Request(メッセージメッセージ、TimeSpanタイムアウト) at System.ServiceModel.Chan System.ServiceModel.Channels.ServiceChannel.Call(Stringアクション、Boolean oneway、ProxyOperationRuntime操作、Object)で にnels.ServiceChannel.Call(Stringアクション、ブール代入、ProxyOperationRuntime操作、Object [] ins、Object []出力、TimeSpanタイムアウト) []インは、System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCallで、ProxyOperationRuntime動作)System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessageがメッセージ)に再スロー

例外[における で[]アウト) オブジェクト0]: at System.Runtime.Remoting.Proxy.RealProxy.HandleReturnMessage(IMessage reqMsg、IMessage retMsg) at System.Runtime.Remoting.Proxy.RealProxy.PrivateInvoke(MessageData & TrustmarkServiceClient.StartRobotProcessでITrustmarkService.StartRobotProcessでmsgData、のInt32型) () ()

これを引き起こしているものを任意のアイデア?

答えて

2

これはMSDNからのサンプルWCF​​クライアントの設定です:

<bindings> 
      <wsHttpBinding> 
       <binding name="WSHttpBinding_ISampleService" closeTimeout="00:01:00" 
        openTimeout="00:01:00" receiveTimeout="00:01:00" sendTimeout="00:01:00" 
        bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" 
        maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" 
        allowCookies="false"> 
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
         maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
        <reliableSession ordered="true" inactivityTimeout="00:10:00" 
         enabled="false" /> 
        <security mode="Message"> 
         <transport clientCredentialType="None" proxyCredentialType="None" 
          realm="" /> 
         <message clientCredentialType="Windows" negotiateServiceCredential="true" 
          algorithmSuite="Default" establishSecurityContext="true" /> 
        </security> 
       </binding> 
      </wsHttpBinding> 
     </bindings> 

あなたがあなたのテストの設定ファイルに同様の構成を見ることができ、充当値にreceiveTimeoutsendtimoutを設定する必要があります。

+0

@Sidharth完全に正しいようにするには、[binding.receiveTimeout](https:// msdn.microsoft.com/en-us/library/system.servicemodel.channels.binding.receivetimeout(v=vs.110).aspx)および[binding.ReliableSession.InactivityTimeout](https://msdn.microsoft。これら2つのいずれかが期限切れになると接続が切断されるため、com/ja-ja/library/system.servicemodel.reliablesession.inactivitytimeout(v = vs.110).aspx)これらの設定は、上記のように.configファイルで変更することも、コード内で変更することもできます。 – AlwaysLearning

0

はい。既定では、WCFサービスの応答タイムアウトは1分に設定されています。つまり、クライアントは1分ほど待つことができ、その時間に応答がない場合は、失敗/無応答と見なすことができます。

あなたの場合、クライアントの要求に応答するためにブレークポイントを使用してWCFサービスを保持しています。そして、1分待ってから、クライアントはタイムアウトし、もう待っていません。

このタイムアウトをWCFサービスの.configファイルから増やすことができます。

+0

私はこれを.configファイルでどこで変更できるのか教えてください。 – Sidharth

+0

http://stackoverflow.com/questions/424358/increasing-the-timeout-value-in-a-wcf-service – decyclone

関連する問題