나는 asp.net 2.0에서 fusemail을 통합하려고하고있다. API 페이지를 요청하기 위해 HttpWebRequest를 사용하고 있습니다. 최근에 HttpWebRequest가 처음 실패한 다음 계속되고 후속 요청이 성공했다는 사실을 알게되었습니다.HttpWebRequest가 처음 실패하고 작동하지 않는 이유는 무엇입니까?
내가 한번 실패한 후 작동이 코드
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
는이 오류와 함께
System.Net.WebException 실패는 HttpWebRequest를 실패 처음 응답 : 원격 서버에 연결할 수 없습니다를 - -> System.Net.Sockets.SocketException : 연결된 당사자가 일정 시간 후 제대로 응답하지 않았거나 연결 호스트가 응답하지 않아 연결이 실패하여 연결 시도가 실패했습니다. 67.207.202.118:80
Is 첫 번째로 인증 문제가 있습니까? 나는 몇몇 포럼에서 먼저 Unauthorized (401 Unauthorized)를 전송 한 다음 연결할 수 있습니다. Fiddler를 사용하여이를 확인할 수 없습니다.
IIS 구성에 문제가 있습니까?
아니 생각. 핑이 실패하면, 사용자 환경의 네트워크 문제점을 지적합니다. system.net 추적 로그를 생성하고 (http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html 참조) 로그 파일을보고 네트워크 계층에서 HWR이 무엇을 보는지 확인할 수 있습니다. – feroze
명령 줄에서 telnet 67.207.202.118 80을 시도하여 포트 80에서 시스템에 소켓을 열 수 있는지 확인하십시오. 또한 붙여 넣은 ping 추적에서 처음으로 다른 ip - 192.168.0.253을 시도 했습니까? –