web-dev-qa-db-fra.com

"Une tentative de connexion a échoué car la partie connectée n'a pas répondu correctement après un certain temps" à l'aide de WebClient

J'utilise le code suivant qui fonctionne sur la machine locale, mais lorsque j'ai essayé le même code sur le serveur, une erreur est générée. 

Une tentative de connexion a échoué parce que la partie connectée n'a pas répondu correctement après un certain temps ou si la connexion est établie. a échoué car l'hôte connecté n'a pas répondu

Voici mon code:

WebClient client = new WebClient();
// Add a user agent header in case the 
// requested URI contains a query.
//client.Headers.Add ("ID", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_Host"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID);
StreamReader reader = new StreamReader(data);
string s = reader.ReadToEnd();
Console.WriteLine(s);
data.Close();
reader.Close();

Je me fais une erreur 

Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_Host"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID);

est-ce dû à un pare-feu?

21
Ram Singh

J'ai eu un problème similaire et j'ai dû convertir l'URL de string en objet Uri en utilisant:

Uri myUri = new Uri(URLInStringFormat, UriKind.Absolute);

(URLInStringFormat est votre URL) Essayez de vous connecter en utilisant l'URI au lieu de la chaîne comme suit:

WebClient client = new WebClient();
client.OpenRead(myUri);
15
barca_d

la définition explicite de l'adresse proxy dans web.config a résolu mon problème

<system.net> 
    <defaultProxy> 
            <proxy usesystemdefault = "false" proxyaddress="http://address:port" bypassonlocal="false"/> 
    </defaultProxy> 
</system.net>

Résolution du «code d'erreur TCP 10060: une tentative de connexion a échoué…» lors de l'utilisation d'un service Web

12
Mahmoud Farahat

L'URL que ce code rend accessible dans le navigateur?

http://" + Request.ServerVariables["HTTP_Host"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID

La première chose à vérifier est que l’URL que vous créez est correcte. Ensuite, vérifiez dans le navigateur pour voir s'il navigue. Ensuite, utilisez Fiddler tool pour vérifier ce qui passe sur le réseau. Il se peut que l'URL appelée par le code soit mal échappée.

Ensuite, recherchez les problèmes liés au pare-feu.

2
Ehsan

Je sais que ce ticket est vieux, mais je viens de rencontrer ce problème et je pensais poster ce qui m'arrivait et comment je l'avais résolu:

J'appelais à mon service il y avait un appel à un autre service Web. Comme une gaffe, j'ai oublié de m'assurer que les paramètres DNS étaient corrects lors de la publication du service Web. Mon service Web, une fois publié, essayait alors d'appeler api.myproductionserver.local plutôt que api.myproductionserver.com. C'était le service Web principal qui causait le dépassement de délai.

Quoi qu'il en soit, je pensais que je transmettrais cela.

1
Corran Horn

J'ai eu ce problème. Le code fonctionnait bien en local, mais pas sur le serveur . Utilisation de psPing ( https://technet.Microsoft.com/en-us/sysinternals/psping.aspx ) J'ai réalisé que le port d'applications n'était pas retourner n'importe quoi. Il s’est avéré qu’il s’agissait d’un problème de pare-feu. Je n'avais pas activé le port d'applications dans le pare-feu Windows.

Outils d'administration> Pare-feu Windows avec sécurité avancée A ajouté le port de mes applications aux règles entrantes et il a commencé à fonctionner.

D'une manière ou d'une autre, le numéro de port de l'application avait été modifié. Il a donc fallu un certain temps pour comprendre ce qui se passait. Je pensais donc partager cette possibilité au cas où cela ferait gagner du temps à quelqu'un d'autre ... 

1
SteveL

Je sais que ce post a été posté il y a 5 ans, mais j'ai eu ce problème récemment. Cela peut être causé par des limitations du réseau d'entreprise. Ma solution consiste donc à laisser WebClient passer par un serveur proxy pour passer l'appel. Voici le code qui a fonctionné pour moi. J'espère que ça aide.

        using (WebClient client = new WebClient())
        {
            client.Encoding = Encoding.UTF8;
            WebProxy proxy = new WebProxy("your proxy Host IP", port);
            client.Proxy = proxy;
            string sourceUrl = "xxxxxx";
            try
            {
                using (Stream stream = client.OpenRead(new Uri(noaaSourceUrl)))
                {
                    //......
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
0
Allen Z.

Je sais que c'est un ancien message, mais je suis tombé sur le même problème et j'ai réussi à l'utiliser en désactivant le programme MALWAREBYTES qui causait le problème.

0
Illusions

Cela peut provenir des paramètres de proxy du serveur. Vous pouvez essayer en désactivant le paramètre de proxy, 
<defaultProxy enabled="false" />

0
Jitendra G2