Windows サービスでホストされている単純な WCF サービスがあります。サービス自体は、完了するまでに 10 秒かかる長いトランザクションをシミュレートするだけです。また、データベースにエントリを記録するためのコードがサービスにあるので、それが呼び出されていること、操作が完了していることなどがわかります。サービス構成の概要は次のとおりです。
- バインディング: NetTcpBinding
- SessionMode: 許可 (実際には関係ありません)
- IsOneWay: 真
- InstanceContextMode: シングル
- ConcurrencyMode: シングル
次に、サービス メソッドを 4 回連続して呼び出すテスト クライアントを用意します。ログに表示されると予想されるのは、すべてが順次実行され、複数の呼び出しがキューに入れられ、前の呼び出しでサービスが完了したときに処理されることです。
ただし、ログに記録されているのは最初の通話のみで、残りはドロップされていることがわかります。各呼び出しの間に 15 秒のギャップを入れると、すべての呼び出しが処理され、ログに記録されます。あらゆる種類の設定 (inactivityTimeout、listenBackLog など) をいじりましたが、何も役に立ちませんでした。
ここで何が欠けていますか?