2017-09-06 2 views
0

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のバグですか?これはまだ受け入れられる解決策のようには見えません。

答えて

0

CRLまたはCSP取得がタイムアウトする可能性があります。検索はhttps://msdn.microsoft.com/en-us/library/windows/desktop/aa380269(v=vs.85).aspxで行われます。これを確認するには、CryptoAPIデバッグを使用してください - http://unmitigatedrisk.com/?p=297

+0

クライアントとサーバーの両方にCryptoAPIデバッグを追加しました。セキュアなチャネルを確立できない場合は、クライアント側でのみログを取得します。ログにはエラーはなく、動作したときのログとまったく同じに見えます。 – Rob

+0

私は先に進み、AIAとCDPを証明書から削除しました。クライアントとサーバーの証明書を再生成し、ServerCertificateValidationCallbackを常にtrueに設定し、2回目の試みでは常に失敗します。私はそれがCDPの問題であることを完全に取り除くと思う。 – Rob

関連する問題