2017-04-12 7 views
1

ウェブサービスと通信するために、cpprest-sdkを使用してレストクライアントを構築しています。問題は、たまにでは、(50前後)、複数の成功した要求を送信した後、私は例外を取得することである:WinHttpSendRequest:2148074273キャッシュが不十分

WinHttpSendRequest:関数内2148074273不十分キャッシュ

時には:

私はcpprest-でキャッシュオプションを探してみましたERROR_WINHTTP_SECURE_FAILURE(12175)

sdkが見つかりましたが何も見つかりませんでした。私が.wait()を私の仕事に呼び出すと、例外がcpprest-sdkの中で起こるので、私はWINHTTP_STATUS_CALLBACKを使ってこのエラーの詳細を調べることができるかどうかわかりません。このエラーの原因をより深く調査するにはどうすればよいですか?ここで

は私のRESTリクエストです:

void MyRestClient::PostKeys(const std::string & sKek, const std::string & sKid, const std::string & sCustomerAuthenticator) { 
    uri_builder oBuilder(U("/keys?customerAuthenticator=") + to_string_t(sCustomerAuthenticator)); 
    oBuilder.append_query(KEK, to_string_t(sKek)); 
    json::value oBody; 
    oBody[KID] = json::value::string(to_string_t(sKid)); 

    web::http::http_request oRequest; 
    oRequest.set_method(methods::POST); 
    oRequest.set_request_uri(oBuilder.to_uri()); 
    oRequest.set_body(oBody); 

    m_oCurrentTask = oClient.request(oRequest).then([this](http_response oResponse) { 
     OnPostResponse(oResponse); 
    }); 
} 

https://msdn.microsoft.com/en-us/library/windows/desktop/aa383928(v=vs.85).aspx(第四箇条書き)によると、POSTリクエストは、私が最初の例外を取得していますなぜ私は理解していないキャッシュされるべきではありません。私はまた、リンクの6番目の箇条書きが示唆するように、Httpsキャッシングを無効にしようとしましたが、それは何も変わりませんでした。

何が起こった可能性について似たような経験をしたことがありますか?あるいは、これは正常な動作であり、これらの例外が発生したときに私の要求を再試行する必要がありますか?

+0

[SEC \ _E \ _BUFFER \ _TOO \ _SMALL間欠的なエラーの原因は何ですかWinHttpSendRequest?](https://stackoverflow.com/questions/38752888/what-is-causing-intermittent-sec-e-buffer-too-small-error-coming-from-winhttpsen) – Lyth

答えて

1

Webサービスは、Diffie-Hellmanキー交換でTLSを使用していますか?はいの場合、おそらくWindowsのSSL実装であるSChannelにバグがあります。here for a confirmationを参照してください。残念ながら、利用可能な唯一の修正プログラムは、クライアントがWindows 10の最新ビルドに実行されているWindowsバージョンの更新です。