我正在修整fusemail在asp.net 2.0中。我使用HttpWebRequest来请求API页面。最近我发现HttpWebRequest第一次失败,然后继续并且后续请求成功。为什么HttpWebRequest第一次失败,然后工作正常?
说(我知道如果我使用goto这是一个不好的编程方法),如果我使用此代码
retry:
try
{
Uri uri = new Uri("http://www.fusemail.com/api/request.html");
if (uri.Scheme == Uri.UriSchemeHttp)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.PreAuthenticate = true;
request.Method =
WebRequestMethods.Http.Post;
//request.ReadWriteTimeout = System.Threading.Timeout.Infinite;
//request.Timeout = System.Threading.Timeout.Infinite;
request.ContentLength = data.Length;
request.ContentType =
"application/x-www-form-urlencoded";
//request.UserAgent = Request.UserAgent;
request.UserAgent = "Mozilla/4.0";
request.KeepAlive = false;
request.ServicePoint.Expect100Continue = true;
//request.Accept = "Accept: text/html,application/xhtml+xml,application/xml";
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(data);
writer.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string tmp = reader.ReadToEnd();
response.Close();
//Response.Write(tmp);
if (!String.IsNullOrEmpty(tmp))
{
return tmp;
}
}
return String.Empty;
}
catch (WebException ex)
{
goto retry;
}
这一次失败后的作品。如果发生错误,我正在写入一个文本文件,并且在我失败的请求后,它第二次运行。我正在使用ASP.Net 2.0,并且该网站托管在Windows Server 2008 Standard的IIS 7上。此外查验API地址失败的第一次,然后响应
C:\>ping 67.207.202.118
Pinging 67.207.202.118 with 32 bytes of data:
Reply from 192.168.0.253: **Destination host unreachable**.
Reply from 67.207.202.118: bytes=32 time=218ms TTL=49
Reply from 67.207.202.118: bytes=32 time=218ms TTL=49
Reply from 67.207.202.118: bytes=32 time=217ms TTL=49
Ping statistics for 67.207.202.118:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 217ms, Maximum = 218ms, Average = 217ms
第一次它HttpWebRequest的失败,失败,此错误
System.Net.WebException:无法连接到远程服务器 - - > System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或由于连接的主机未能响应而建立连接失败67.207.202.118:80
是第一次有认证问题?我在一些论坛上看到它首先发送401 Unauthorized,然后它可以连接。我无法使用Fiddler来验证这一点。
IIS配置有什么问题吗?
不知道。如果您的ping失败,那么它指向您环境中的网络问题。您可以尝试创建system.net跟踪日志(请参阅http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html)并查看日志文件以了解HWR在网络层看到的内容。 – feroze 2011-01-27 18:02:11
从命令行尝试telnet 67.207.202.118 80,查看是否可以在端口80上打开机器的套接字。另外,您粘贴的ping跟踪第一次尝试了不同的ip-192.168.0.253? – 2011-02-23 11:35:49