Windows Server 2016でホストされているWebサービスに接続するWindows 10 C#アプリケーションがあります。クライアントアプリケーションは、2分ごとにサーバーを呼び出すタイマーに設定されています。スマートカードのクライアント証明書を使用して相互認証を確立します。SecurityNegotiationExceptionを取得するWindows 10 C#クライアントアプリケーション
Webサービスへの初期接続は毎回動作します。以降の接続は失敗します。アプリケーションを再起動すると、初めて接続することができます。その後、すべての接続が失敗します。これは基本的なhello world Webサービスであり、それを呼び出す単純なウィンドウフォームです。
私は取得しています例外は、それは奇妙な取得するのはここだ「権限でSSL/TLSの安全なチャネルを確立できませんでした」
です。タイマーを30秒に変更すると、毎回動作します。
System.Netトレースをオンにすると、2分タイマーで毎回動作します。
助けてください!
編集: 私はSystem.Net.ServicePointManager.MaxServicePointIdleTimeを自分のタイマーよりも上に設定しました。これにより、私たちのhello worldテストアプリケーションの問題は修正されましたが、本番アプリケーションの問題は修正されました。
編集: このタイムアウトを私たちの運用アプリケーションで動作させることができました。本番アプリケーションでは、まだWebサービスとして設定されていました。これをサービス参照設定に変換した後、このタイムアウトは正しく機能しています。どうしてこれなの?これはServicePointManagerのバグですか?これはまだ受け入れられる解決策のようには見えません。
クライアントとサーバーの両方にCryptoAPIデバッグを追加しました。セキュアなチャネルを確立できない場合は、クライアント側でのみログを取得します。ログにはエラーはなく、動作したときのログとまったく同じに見えます。 – Rob
私は先に進み、AIAとCDPを証明書から削除しました。クライアントとサーバーの証明書を再生成し、ServerCertificateValidationCallbackを常にtrueに設定し、2回目の試みでは常に失敗します。私はそれがCDPの問題であることを完全に取り除くと思う。 – Rob