WCF を使っているアプリをデバッグしていて、WCF のトーレス機能を ON にしていると、 クライアント側のトレースファイルに大量の警告とエラーが出力されていた。
アプリは一見普通に動いていたから、今の今まで気づかなかった。なんという悪夢。
2日ほど調べたんで、分かったことをメモしておく。
- NetTcpBinding を使っていると警告とエラーが出力される
- NetNamedPipeBinding を使っている場合は出力されない
- NetTcpBinding のタイムアウトや通信データ量などの設定を MAX 値にしていても出力される
- どうも、NetTcpBinding のポート共有を有効にしていると出力される
- ポート共有を OFF にすると出力されない
- NetTcpBinding のポート共有を有効にしていると SMSvcHost.exe がソケットを管理するようになる
- SMSvcHost は NetTcpBinding の構成を反映してくれない
- 2 つのエンドポイントにそれぞれ 5 スレッドからアクセスしたあたりから出力された
SMSvcHost の同時接続数エラーあたりが怪しい。SMSvcHost.exe.config を変更するしかないかも。