質問

asp.net 2.0にフューセメイルを統合しようとしています。 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;
        }

一度失敗した後に機能します。エラーが発生した場合にテキストファイルに書き込み、リクエストに失敗した後、2回目に動作します。私はASP.NET 2.0を使用しており、WebサイトはWindows Server 2008 Standardを使用してIIS 7でホストされています。また、APIアドレスをpingすると、初めて失敗してから応答します

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を許可してから接続できるフォーラムで読みました。フィドラーを使用してこれを確認することはできません。

IIS構成に何か問題がありますか?

役に立ちましたか?

解決

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

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

あなた、

モハメド・カマル・エルベア

シニア.NET開発者

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top