2017-04-12 16 views
1

웹 서비스와 통신하기 위해 cpprest-sdk를 사용하여 나머지 클라이언트를 구축합니다.WinHttpSendRequest : 2148074273 캐시가 부족합니다.

WinHttpSendRequest :

또는 때때로 함수 2148074273 부족 캐시 :

문제는 모든 번 한 동안, (50의 주위에) 여러 성공적인 요청을 보낸 후, 나는 예외를 얻을 수 있다는 것입니다

ERROR_WINHTTP_SECURE_FAILURE는 (12175)

나는 cpprest-의 캐시 옵션을 찾기 위해 노력 SDF하지만 아무것도 찾지 못했습니다. 내 작업에서 .wait()을 호출하면 예외가 cpprest-sdk에서 발생하므로이 오류에 대한 자세한 내용을 확인하기 위해 WINHTTP_STATUS_CALLBACK을 사용할 수 있는지 확실하지 않습니다. 이 오류의 원인을 찾기 위해 더 자세히 조사하려면 어떻게해야합니까? 포스트 요청이 그래서 내가 처음 예외를 얻고 이유를 이해하지 않습니다 https://msdn.microsoft.com/en-us/library/windows/desktop/aa383928(v=vs.85).aspx (4 총알)에 따르면

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 캐싱을 사용하지 않으려 고했지만, 아무 것도 바뀌지 않았습니다.

어떤 일이 일어 났는지에 관해 비슷한 경험을했거나 통찰력이있는 사람이 있습니까? 아니면 정상적인 동작입니까? 이러한 예외가 발생하면 요청을 다시 시도해야합니까?

+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

웹 서비스에서 Diffie-Hellman 키 교환으로 TLS를 사용합니까? 그렇다면 Windows의 SSL 구현 인 SChannel에 버그가있는 것 같습니다 (here for a confirmation 참조). 유감스럽게도 사용 가능한 유일한 수정 프로그램은 클라이언트가 최신 Windows 10 빌드로 실행되는 Windows 버전의 업데이트입니다.