【问题标题】:Unable to connect to remote server WebClient无法连接到远程服务器 WebClient
【发布时间】:2017-12-15 19:42:43
【问题描述】:

内部异常:System.Net.Sockets.SocketException (0x80004005):连接尝试失败,因为连接方一段时间后没有正确响应,或者连接的主机没有响应,建立连接失败

背景:此错误来自正在调用的 Web 服务。当 Visual Studio 在本地运行时,它可以顺利运行。当我将此应用程序部署到服务器上并访问相同的 Web 服务时,我收到此错误。

我尝试过的:从 c# 库而不是使用字符串创建 URI。取消我的 WebClient 对象的代理属性。在我的 web.config 文件中添加一个条目以绕过一些代理内容。

相关代码:

            try
            {
                var uri = ConfigurationManager.AppSettings["MyUrl"] + "apiAction";
                using (var httpClient = new WebClient())
                {
                    httpClient.BaseAddress = uri;

                    httpClient.Headers.Add("content-type", "application/json; charset=utf-8");
                    var content = new
                    {
                        UserAuthorizationToken = userToken
                    };
                    var jsonObj = JsonConvert.SerializeObject(content);

                    var response = httpClient.UploadString(uri, jsonObj);

                }
            }

谁能指出我正确的方向来解决这个问题?提前致谢

编辑(以防止不得不挖掘 cmets):

已验证 URL 正确无误。在应用程序的其他地方,有一些角度函数成功地访问了相同的方法。所以,我认为不应该有防火墙问题,但我现在有点迷茫,所以我不能自信地说没有。我也可以远程进入这个服务器

【问题讨论】:

  • 您确保生产中的设置正确吗?您是否记录了它尝试访问的 URL?您是否尝试过远程访问机器并验证您可以访问浏览器中的 URL?您是否确认计算机没有被防火墙阻止?
  • 该 URL 已验证正确。在应用程序的其他地方,有一些角度函数成功地访问了相同的方法。所以,我认为不应该有防火墙问题,但我现在有点迷茫,所以我不能自信地说没有。我也可以远程进入这个服务器
  • 您是说当 API 从客户端(javascript 代码)访问时它工作正常,但从服务器调用时却不行?如果您 100% 确定 URL 是正确的,那么肯定是网络/防火墙问题。 RDP 进入服务器并确保您可以使用浏览器或 powershell Invoke-WebRequest 访问它绝对值得一试。
  • 您是说当 API 从客户端(javascript 代码)访问时它工作正常,但从服务器调用时却不行?

标签: c# web-services webclient


【解决方案1】:

正如 Mason 和 Dylan Nicholson 指出的那样,这个问题的答案原来是防火墙问题。我很欣赏方向,伙计们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2011-04-29
    • 2010-11-13
    相关资源
    最近更新 更多