从C#调用WebApi时出现异常HttpRequestException

3
以下代码是一个简单的ASP.NET网站,托管在IIS上。当我从本地机器运行网站时,无论环境名称(UAT和SYSTEM),它都可以正常工作。但是当托管在IIS上时,调用WebApi时SYSTEM环境会出现错误,而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)
                {

                }
            }
        }

当我运行环境名称为“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) at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
请帮忙,我是WebApi的新手。我是否遗漏了什么?我已经以相同的方式在两个环境中托管了WebApi。

1
有没有防火墙阻止受限制的网站访问?这可能会影响您的响应速度。 - Chaitanya Gadkari
尝试检查您收到的 HttpRequestExceptionInnerException。它可以提供更详细的信息。 - suvroc
但是我能够在本地机器的Visual Studio上运行代码,但是当我将其托管到其他服务器(但与WebAPI服务器相同的域)的IIS上时,我会收到异常。我还在托管服务器上为SYSTEM环境运行了WebApi,并且它可以正常工作。因此,如果防火墙是一个问题,我应该查看哪个服务器,托管的IIS服务器还是WebApi服务器。对不起,我很天真,但我刚刚开始接触所有这些。感谢您的回复。 - keyur sheth
端口5453是由Visual Studio分配的吗?IIS通常运行在端口80上。您可以尝试使用"http://172.26.25.53"访问吗? - Parthasarathy
端口是我在IIS中分配的,因为端口80被其他网站占用了。 - keyur sheth
你能从网站服务器ping通Web API服务器吗?使用telnet命令,检查是否可以连接到服务器的IP地址和端口。 - Prashant
1个回答

2

我发现这是一个超时问题。 为了解决这个问题,我增加了IIS中的连接时间。 在IIS中,我进入默认网站,右键单击-->管理网站-->高级设置-->连接限制(展开)-->将默认值从120更改为(比如)180。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接