Question

Je suis DÉVOILAGE d'intégrer fusemail dans asp.net 2.0. J'utilise HttpWebRequest pour demander les pages de l'API. Il est venu récemment à mon avis que HttpWebRequest échoue la première fois et se poursuit ensuite et les demandes ultérieures parviennent.

dire (je sais que si je l'utilise goto est une mauvaise approche de programmation) si j'utilise ce code

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

il fonctionne après avoir échoué une fois. je suis en train d'écrire dans un fichier texte dans le cas d'une erreur et après i requête ayant échoué, il fonctionne la deuxième fois. J'utilise ASP.Net 2.0 et le site est hébergé sur IIS 7 avec Windows Server 2008 Standard. pinger également l'adresse de l'API échoue la première fois, puis répond

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

La première fois, il échoue dans HttpWebRequest il échoue avec cette erreur

System.Net.WebException: Impossible de se connecter au serveur distant ---> System.Net.Sockets.SocketException: Une tentative de connexion a échoué car le parti connecté n'a pas correctement répondre après une période de temps, ou une connexion établie a échoué car l'hôte connecté n'a pas répondu 67.207.202.118:80

Y at-il un problème d'authentification pour la première fois ?. je l'ai lu sur certains forums, il envoie d'abord un 401 non autorisé et il peut se connecter. Je suis incapable de vérifier en utilisant Fiddler.

Y at-il quelque chose de mal avec la configuration IIS?

Était-ce utile?

La solution

Ce n'est pas un problème de programmation du tout, j'ai fait face à un problème similaire plus tard et il était un problème de configuration du réseau en raison de paramètres serveur / pare-feu ISA. Vous devez contacter votre administrateur réseau pour vérifier cette question.

Je souhaite que cela vous a aidé.

Bien à vous,

Mohamed Kamal Elbeah

Senior .Net Developer

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top