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的主要内容,如果未能解决你的问题,请参考以下文章

httpclient下载文件

使用httpClient远程调用

HttpClient学习—— 基本使用

HttpClient

HTTPClient案例

httpclient