15 votes

Pourquoi est-ce que j'obtiens une exception "Impossible de se connecter au serveur distant" à partir d'une application web et non à partir d'une application console ?

J'ai un service web asmx qui tourne sur un serveur de test dont l'accès anonyme est activé.

Lorsque j'ajoute la référence web à une application console et que j'appelle une simple méthode Hello World comme suit :

PivotService.PivotService p = new PivotService.PivotService();
String s = p.SayHello();

Lorsque je fais exactement la même chose dans le chargement de la page d'une application web, j'obtiens un message de type System.Net.WebException: {"Unable to connect to the remote server"} .

L'exception interne est {"No connection could be made because the target machine actively refused it 127.0.0.1:8888"} , errorCode 10061.

Pourquoi cela fonctionnerait-il à partir d'une application console et non d'une application web ?

28voto

Mark 909 Points 870

Cela peut être dû à des différences dans les paramètres de proxy entre les applications. Consultez la documentation MSDN relative à l'option Proxy par défaut dans le fichier de configuration.

16voto

Kiran R Points 246

J'ai également été confronté à une situation similaire lors de l'utilisation de HttpClient de la classe System.Net.Http l'espace de noms. J'essayais d'effectuer un appel réseau qui passe par le serveur proxy de l'entreprise.

Bien que cette HttpClient a pu résoudre avec succès l'IP du dns lorsqu'il a été appelé à partir d'une application console dans visual studio, mais la résolution dns a échoué lorsque l'appel a été effectué à partir d'une API Web. Il s'est avéré que je devais avoir cette entrée dans le web.config de l'application web api.

<system.net>
    <defaultProxy />
</system.net>

Merci à la réponse de Mark 909 de m'avoir orienté dans la bonne direction. Voir aussi Proxy par défaut pour plus d'informations.

c# httpclient webapi

1voto

Pavan Ambhure Points 11

Supprimer d'abord la référence web de la console lancez votre service web et copiez l'URL allez dans votre explorateur de solutions et ajoutez une référence web (excluez l'ancienne)>Avancé>Ajouter une référence web ajoutez l'URL à coller puis ajoutez le nom de votre référence web puis reconstruisez votre solution. cela fonctionne bien pour moi

0voto

Comme le suggère @R Kiran Kumar, j'ai également dû ajouter les valeurs de proxy :

<system.net>
    <defaultProxy>
      <proxy usesystemdefault="False"
             proxyaddress="Specify Your Proxy Address: Specify Port Number"
             // Example, "http://192.168.0.10:1234"
bypassonlocal="False"/>
    </defaultProxy>
  </system.net>

0voto

Utilisez cette ligne :

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

Juste au-dessus de la httpclient création d'objets

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X