2

WCF サービスを使用する Windows アプリケーションがあります。いくつかの WCF サービス呼び出しがあり、ClientBase.Close()メソッドは常に後で呼び出されます。アプリケーションを閉じると、VS2010 でエラーが発生しません。デバッガーですべての例外を有効にし、可能な限りすべてにコンパイラーをアタッチしました。すべての接続を閉じていますが、アプリを閉じているときに非同期で実行されている WCF サービス呼び出しはありません。

しかし、WCF サービスで例外が発生します。

ソケット接続が中止されました。これは、メッセージの処理中にエラーが発生したか、リモート ホストが受信タイムアウトを超過したか、基になるネットワーク リソースの問題が原因である可能性があります。ローカル ソケットのタイムアウトでした (大きな数値がここに表示されます)。

エラーコードは10054

内部例外は次のとおりです。

既存の接続がリモート ホストによって強制的に閉じられました。

しかし、これは私のコードでどのように起こるのでしょうか?

この誤った動作の理由を見つけるにはどうすればよいですか?

4

2 に答える 2

1

サーバーで WCF トレースを有効にし、WCF トレース ビューアーで結果を表示し、アプリ プールにサービスを含むディレクトリへのアクセス権があることを確認します ...

<system.diagnostics>
<sources>
  <source name="System.ServiceModel" 
          switchValue="Verbose" 
          propagateActivity="true">
    <listeners>
      <add name="traceListener" 
           type="System.Diagnostics.XmlWriterTraceListener" 
           initializeData="Events.evt"  />
    </listeners>
  </source>
</sources>
<trace autoflush="true"/>

于 2012-05-03T17:51:58.477 に答える
1

増加ChannelInitializationTimeout

初期読み取り中に接続がプリアンブルを送信するのを待機する最大時間。このデータは、認証が行われる前に受信されます。

デフォルト値は 5 秒です。これは、「既存の接続がリモート ホストによって強制的に閉じられた」という原因です。例外。

于 2012-05-03T17:42:21.077 に答える