Domanda

Mi centratura per integrare fusemail in asp.net 2.0. Sto usando HttpWebRequest per richiedere le pagine API. Di recente è venuto a mio avviso che HttpWebRequest fallisce la prima volta e poi prosegue e le richieste successive riescono.

diciamo (lo so se io uso goto si tratta di un approccio di programmazione cattivo) se io uso questo codice

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

funziona dopo aver fallito una volta. Le scrivo per un file di testo in caso di errore e dopo non sono riuscito richiesta funziona la seconda volta. Sto usando ASP.Net 2.0 e il sito web è ospitato su IIS 7 con Windows Server 2008 Standard. ping anche l'indirizzo API fallisce la prima volta e poi risponde

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 prima volta non riesce a HttpWebRequest viene a mancare con questo errore

System.Net.WebException: Impossibile connettersi al server remoto ---> System.NET.Sockets.SocketException: un tentativo di connessione non è riuscito perché l'entità connessa non ha risposto correttamente dopo un periodo di tempo, o stabilita connessione non è riuscita perché host connesso non ha risposto 67.207.202.118:80

C'è un problema di autenticazione per la prima volta ?. ho letto su alcuni forum che invia prima una 401 non autorizzato e quindi può collegarsi. Sono in grado di verificare questo utilizzando Fiddler.

C'è sbagliato nulla con configurazione di IIS?

È stato utile?

Soluzione

Questo non è un problema di programmazione a tutti, ho affrontato un problema simile in seguito ed è stato un problema di configurazione di rete a causa di ISA Server / impostazioni del firewall. È necessario contattare l'amministratore di rete per controllare questo problema.

Vorrei che questo ti ha aiutato.

I tuoi,

Mohamed Kamal Elbeah

anziano .Net Developer

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top