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

时间:2018-09-03 05:53:22

标签: c# api .net-core

在我的.Net核心API项目中,调用另一个API(已停止)时,出现错误提示。

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");

1 个答案:

答案 0 :(得分:0)

欢迎来到SO。

要使您的代码获得import React, { Fragment } from "react"; import { Paper, ListItem, List, ListItemText } from "@material-ui/core"; import { withStyles } from "@material-ui/core/styles"; const styles = { sideBar__block: { padding: 20 }, sideBar__list__element: { li: { borderBottom: "1px solid rgb(212, 212, 212)" } }, sideBar__listItem__element: { borderBottom: "1px solid rgb(212, 212, 212)" } }; const SideBar = props => { const { classes } = props; return ( <div className={classes.sideBar__block}> <Paper className={classes.sideBar__list__element}> <List> <ListItem className={classes.sideBar__listItem__element}> <ListItemText primary="form" secondary=" FORM" /> </ListItem> <ListItem> <ListItemText primary="E" secondary=" Inbox" /> </ListItem> <ListItem> <ListItemText primary="re box" secondary=" Inbox" /> </ListItem> <ListItem> <ListItemText primary="Upload" secondary="upload" /> </ListItem> </List> </Paper> </div> ); }; export default withStyles(styles)(SideBar); 503响应,您需要在指定的URL上安装一台服务器。在您的情况下,404上没有服务器可以返回HTTP状态代码。对于任何不存在的URL都是一样的。

如果您尝试使用其他网址,例如apiBaseUrl,您将得到一个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 }

在此示例中,邮局是.NET Framework / HttpClient类,真实地址中的居民是Web服务器。