2011-01-27 6 views
0

私は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; 
     } 

を使用している場合、それは一度失敗した後動作します(私はgoto文を使用している場合、それは悪いプログラミングのアプローチである知っている)と言います。私はエラーが発生した場合にテキストファイルに書き込んでいます。要求が失敗した後は2回目の動作となります。私はASP.Net 2.0を使用しており、WebサイトはWindows Server 2008 Standardを使用してIIS 7でホストされています。また、それはそれはそれは、このエラー

System.Net.WebExceptionで失敗HttpWebRequestのに失敗した最初の時間最初の時間を失敗し、その後

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 

を応答APIアドレスをping:リモートサーバーに接続できませんが - - > System.Net.Sockets.SocketException:接続されたホストが応答しなかったため、接続されたホストが一定期間後に正しく応答しなかったか、接続されたホストが応答しなかったため接続に失敗したため、接続が失敗しました67.207.202.118:80

Is最初に認証の問題がありますか?私はいくつかのフォーラムで最初に401 Unauthorizedを送信し、その後接続することができます。私はFiddlerを使ってこれを確認することができません。

IISの設定に問題はありますか?

+1

ないアイデア

モハメド・カマルElbeah

。あなたのpingが失敗している場合、あなたの環境内のネットワークの問題を指しています。 system.netトレースログを作成して(http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.htmlを参照)、ログファイルを参照して、HWRがネットワーク層で何を見ているかを確認できます。 – feroze

+0

コマンドラインからtelnet 67.207.202.118 80を試して、ポート80のマシンにソケットを開くことができるかどうかを確認してください。また、貼り付けたpingトレースは、初めて異なるip-192.168.0.253を試しましたか? –

答えて

1

これはプログラミング上の問題ではありません。私は後で同様の問題に直面し、ISAサーバー/ファイアウォールの設定によるネットワーク構成の問題でした。 この問題を確認するには、ネットワーク管理者に連絡する必要があります。

私はこれがあなたを助けてくれることを願っています。

ユアーズ、シニア.NET開発者

+0

ファイアウォールでどのような設定を変更しましたか? –

関連する問題