WsHttpBinding、クライアントとサーバーの証明書、およびクレーム ベースの承認によるトランスポート セキュリティを備えたセキュリティで保護された WCF サービスがあります。
50% の確率ですべてが正常に機能します。安全なエンドポイントにリクエストすると、正しいレスポンスが得られます。しかし、最初のリクエストの直後に同じリクエストを再度送信すると、次のレスポンスが得られます。
The HTTP request was forbidden with client authentication scheme 'Anonymous'.
その後、再度リクエストを送信すると、通常の動作になります。したがって、奇妙なリクエストは機能しますが、機能しません。
しかし、問題をさらに調査した後。前回のリクエストから 1:40 分以上の間隔がある場合、エラー レスポンスが得られないことに気付きました。
デバッガーとログから確認できること。クライアントは資格情報をサービスに送信します。Authentication 応答がある場合は、System.ServiceModel を入力しません。IIS トレース ログでは、適切な要求でこれを取得します。
Authentication: SSL/PCT
User from token: Domain\CertifacteUserName
そしてこれは悪い要求で:
Authentication: NOT_AVAILABLE
User from token:
IIS トレース ログでも。2 番目のリクエストを送信すると、両方のリクエストで ConnId と RawConnId が同じであることがわかります。また、複数のリクエストを成功させると (リクエスト間に時間を空けることで)、リクエストごとに異なります。
送信した資格情報が存在する場合、IIS がその資格情報を取得していないように思えます。これはキャッシングのせいでしょうか?または、他の何か?誰かが解決策を持っていますか。