HttpClient->GetStringAsync() 为 https Uris 抛出 0x000006F4
Posted
技术标签:
【中文标题】HttpClient->GetStringAsync() 为 https Uris 抛出 0x000006F4【英文标题】:HttpClient->GetStringAsync() throws 0x000006F4 for https Uris 【发布时间】:2017-05-10 20:24:33 【问题描述】:如果我使用 http URI,下面的代码对我来说可以正常工作,但对于等效的 https 替代方案则失败。当在另一台机器上构建和运行时,或者当我将它包含在另一个应用程序中时,它可以正常工作。
GetStringAsync 引发异常:“在 .exe 中的 0x770B5722 (KernelBase.dll) 处引发异常:0x000006F4:将空引用指针传递给存根。发生”。
ThreadPool::RunAsync(ref new WorkItemHandler([this](IAsyncAction^ action)
HttpClient^ client = ref new HttpClient();
auto uri = ref new Uri(L"https://....");
auto t = create_task(client->GetStringAsync(uri));
t.then([](String^ response)
// response should be valid.
);
));
【问题讨论】:
【参考方案1】:运行netsh winsock reset
重置网络堆栈似乎可以解决问题!
【讨论】:
【参考方案2】:对我来说,网络堆栈重置根本没有帮助,甚至设备重启也没有帮助,但你自己的回答为我指明了正确的方向:突然发疯的不是我的代码,而是 Windows .因此,在我的情况下,真正有帮助的是在没有调试器的情况下启动应用程序(即从“开始”菜单)——之后该应用程序在从 Visual Studio 启动时继续正常工作。现在已经发生了几次,我可以确认它总是有帮助的。
【讨论】:
以上是关于HttpClient->GetStringAsync() 为 https Uris 抛出 0x000006F4的主要内容,如果未能解决你的问题,请参考以下文章