从 C# 调用 WebApi 获取异常 HttpRequestException
Posted
技术标签:
【中文标题】从 C# 调用 WebApi 获取异常 HttpRequestException【英文标题】:Calling WebApi from C# getting exception HttpRequestException 【发布时间】:2015-09-23 05:19:17 【问题描述】:以下代码是托管在 IIS 上的简单 ASP.NET 网站。当我从本地机器运行网站时,它对 environmentName(UAT 和 SYSTEM)都适用。但是当托管在 IIS 上时,在为 SYSTEM 环境调用 WebApi 时出现错误,并且 UAT 工作正常。
string uri = string.Empty;
StringBuilder sbResult = new StringBuilder();
string message = string.Empty;
try
using (HttpClient client = new HttpClient())
if (environmentName.ToLower().Contains("system"))
uri = "http://172.26.25.53:5453/"; // SYS
else
uri = "http://172.26.129.21:5453/"; // UAT
client.BaseAddress = new Uri(uri);
var response = client.GetAsync("api/AppFabric").Result;
if (response.IsSuccessStatusCode)
当我为 environmentName "UAT" 运行此代码时,它运行良好。但是当环境名称为“SYSTEM”时,我得到如下异常
System.AggregateException:发生一个或多个错误。 ---> System.Net.Http.HttpRequestException:发送时出错 请求。 ---> System.Net.WebException: 无法连接到 远程服务器---> System.Net.Sockets.SocketException:一个连接 尝试失败,因为连接方没有正确响应 一段时间后,或建立连接失败,因为 连接的主机未能响应 172.26.25.53:5453 at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) 在 System.Net.ServicePoint.ConnectSocketInternal(布尔连接失败, Socket s4, Socket s6, Socket&socket, IPAddress&地址, ConnectSocketState 状态、IAsyncResult asyncResult、Exception& 例外)
请帮忙,我是 WebApi 的新手。有没有我错过了什么。我以相同的方式在两个环境中托管了 WebApi。
【问题讨论】:
是否有防火墙阻止站点以限制访问?这可能会影响您的反应。 尝试从HttpRequestException
中检查InnerException
,你会得到。它可以为您提供更详细的信息。
但是我可以从本地机器 Visual Studio 运行代码,但是当我将它托管在其他服务器的 IIS 上(但与 WebAPI 服务器相同的域)时,我得到了异常。我还在托管服务器上运行了 SYSTEM 环境的 WebApi,它运行良好。因此,如果防火墙是我应该在哪个服务器上看到的问题,托管 IIS 服务器或 WebApi 服务器。抱歉我太天真了,但我才刚刚开始做这一切。感谢您的回复。
5453端口是由visual studio分配的吗? IIS正常运行在80端口,可以试试用“172.26.25.53”访问吗?
没有我在 IIS 中分配的端口,因为端口 80 已被其他网站占用。
【参考方案1】:
我发现这是一个超时问题。 为了解决这个问题,我增加了 IIS 中的连接时间。 在 IIS 中,我转到默认网站,右键单击 --> 管理网站 --> 高级设置 --> 连接限制(扩展) --> 将默认值从 120 更改为(比如说)180。
【讨论】:
以上是关于从 C# 调用 WebApi 获取异常 HttpRequestException的主要内容,如果未能解决你的问题,请参考以下文章