WinHttpSendRequest:2148074273缓存不足
WinHttpSendRequest: 2148074273 insufficient cache
我正在使用cpprest-sdk构建一个Rest客户端来与Web服务进行通信。问题是每隔一段时间,在发送多个成功的请求(大约 50 个)后,我就会得到异常:
WinHttpSendRequest:2148074273函数中的缓存不足
或者有时:
ERROR_WINHTTP_SECURE_FAILURE (12175)
我试图在cpprest-sdk中寻找缓存选项,但没有找到任何东西。由于当我在任务上调用.wait()
时,异常发生在 cpprest-sdk 内部,我不确定是否可以使用该WINHTTP_STATUS_CALLBACK来检查有关此错误的更多详细信息。如何更深入地调查以查找此错误的原因?
这是我的休息请求:
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(第 4 个项目符号),不应缓存 Post 请求,所以我不明白为什么我会收到第一个异常。我还尝试按照链接中的第 6 个项目符号建议禁用 Https 缓存,但这并没有改变任何东西。
有没有人经历过类似的事情,或者对可能发生的事情有任何见解?或者这是一种正常行为,当这些异常发生时,我应该重试我的请求吗?
您的 Web 服务是否将 TLS 与 Diffie-Hellman 密钥交换一起使用?如果是,您可能会在SChannel中看到一个错误,这是Windows的SSL实现,请参阅此处进行确认。不幸的是,唯一可用的修复程序是将客户端运行的 Windows 版本更新到最新版本的 Windows 10。
相关文章:
- cmake更新缓存的变量
- 试图对缓存进行跨步测试,但程序并没有结束
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 通过ccmake在cmake中缓存依赖选项
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- 如何使缓存线程安全
- 存储指令是否会阻止缓存未命中的后续指令?
- 缓存局部性与函数调用
- Qt 网页程序集缓存
- 多线程减慢程序速度:无错误共享,无互斥锁,无缓存未命中,无小工作量
- std::shared_ptr vs std::make_shared:意外的缓存未命中和分支预测
- 多个 rocksdb 实例:使用单个共享缓存还是多个独立缓存?
- 无法链接 LRU 缓存C++
- 空函数的参数是否加载到缓存中?
- 是否可以检查变量是否位于 L1/L2/L3 缓存中
- dynamic_cast每次调用是否比具有空检查的缓存变量更昂贵?
- C++:如何在从给定缓存中排除数字的同时生成随机数
- 如何对0,1,..中的k个随机数进行采样..,n-1,而不缓存到数组
- 缓存大量回调,然后批量调用它们,无需v表成本
- WinHttpSendRequest:2148074273缓存不足