首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决System.Net.Http.WinHttpException:无法与服务器建立连接?

如何解决System.Net.Http.WinHttpException:无法与服务器建立连接?
EN

Stack Overflow用户
提问于 2018-09-03 13:53:22
回答 1查看 3K关注 0票数 0

在我的.Net核心应用程序接口项目中,当调用另一个应用程序接口(被停止)时,我得到下面的错误。

System.Net.Http.HttpRequestException:发送请求时出错。-> System.Net.Http.WinHttpException:无法建立与服务器的连接

我认为它应该返回状态代码503 (服务不可用)或404 (未找到),而不是得到这个错误,但我得到了上面的异常。请指教如何解决这个问题?我的代码是:

代码语言:javascript
运行
复制
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("apiBaseUrl");
HttpResponseMessage response = await httpClient.GetAsync("apiUrl");
EN

Stack Overflow用户

回答已采纳

发布于 2018-09-03 14:17:47

欢迎来到SO。

为了让您的代码获得503404响应,需要在您指定的URL处有一个服务器。在您的示例中,apiBaseUrl上没有返回HTTP状态代码的服务器。这对于任何不存在的URL都是一样的。

如果你尝试一个不同的网址,例如https://google.com/fake,你会得到一个404,因为服务器google.com的存在是为了能够发回一个404,说明在它的服务器上找不到/fake部件。

如果您想要处理它,那么您可以捕获System.Net.Http.HttpRequestException并相应地处理它。

代码语言:javascript
运行
复制
try
{
    HttpClient httpClient = new HttpClient();
    httpClient.BaseAddress = new Uri("apiBaseUrl");
    HttpResponseMessage response = await httpClient.GetAsync("apiUrl");
}
catch(HttpRequestException ex)
{
    // Handle the exception here
}

如果你把它想象成一个邮寄地址。如果你写给一个不存在的随机地址,那么你会从邮局拿回你的信,但会有一个例外,上面写着“没有这样的地址”--这相当于上面的例外。

然而,如果你写到一个真实的地址,但是写给一个不住在那里的人,那么你会从那个地址的居民那里收到你的信,上面写着“没有这样的人在这个地址”,这与404是一样的。

在本例中,邮局是.NET框架/HttpClient类,实际地址的居民是web服务器。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52143822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档