在我的.Net核心应用程序接口项目中,当调用另一个应用程序接口(被停止)时,我得到下面的错误。
System.Net.Http.HttpRequestException:发送请求时出错。-> System.Net.Http.WinHttpException:无法建立与服务器的连接
我认为它应该返回状态代码503 (服务不可用)或404 (未找到),而不是得到这个错误,但我得到了上面的异常。请指教如何解决这个问题?我的代码是:
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("apiBaseUrl");
HttpResponseMessage response = await httpClient.GetAsync("apiUrl");
发布于 2018-09-03 14:17:47
欢迎来到SO。
为了让您的代码获得503
或404
响应,需要在您指定的URL处有一个服务器。在您的示例中,apiBaseUrl
上没有返回HTTP状态代码的服务器。这对于任何不存在的URL都是一样的。
如果你尝试一个不同的网址,例如https://google.com/fake
,你会得到一个404
,因为服务器google.com
的存在是为了能够发回一个404
,说明在它的服务器上找不到/fake
部件。
如果您想要处理它,那么您可以捕获System.Net.Http.HttpRequestException
并相应地处理它。
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服务器。
https://stackoverflow.com/questions/52143822
复制相似问题