【发布时间】: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