Question

J'utilise VS2010. Dans une application de console simple, j'essaie d'ajouter une référence de service à http://***/service1.asmx , vieux service ASMX. Mon ordinateur est derrière un serveur proxy, donc j'obtiens une erreur:

"Le serveur distant a renvoyé une réponse inattendue: (407) Authentification proxy requise."

Lorsque j'utilise l'outil WSDL, je ne peux pas définir le numéro de port du serveur proxy et je reçois un message que le serveur, pour Examle 10.0.0.3:80, n'a pas répondu, mais je dois spécifier le port 8080 et je ne sais pas comment. Comment pourrais-je créer une référence?

Était-ce utile?

La solution

Jetez un œil aux liens ci-dessous pour spécifier l'adresse proxy et le port serveur lors de l'ajout d'une référence Web.

http://msdn.microsoft.com/en-us/library/bb628649.aspx

http://msdn.microsoft.com/en-us/library/03seed2h.aspx

Pour ajouter une référence à un ASMX

  1. Cliquez avec le bouton droit sur l'application Console et sélectionnez Ajouter une référence de service.

  2. Cliquez sur le bouton avancé et entrez l'adresse ASMX dans la barre d'adresse. Cliquez sur le bouton vert à côté pour découvrir l'ASMX.

  3. Donnez-lui un nom et cliquez sur Ajouter Ref.

MISE À JOUR: Essayez de mettre à jour la configuration de configuration Web / application et d'ajout;

<system.net>

<defaultProxy>
<proxy usesystemdefault="True" proxyaddress="http://[your proxy address and port number]"  bypassonlocal="True"/>

</defaultProxy>

</system.net>

Autres conseils

J'ai passé près de 50 heures à trouver le problème, je n'ai pu trouver nulle part sur le Web cette solution simple.

Sous la section "Configuration" dans web.config Ajoutez ceci:

  <system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true"></defaultProxy>
</system.net>

Alors fonctionne comme un charme!

Vous pouvez également le faire à partir du code derrière:

serviceConnection = new WebService1();
serviceConnection.Proxy = System.Net.HttpWebRequest.GetSystemWebProxy();
serviceConnection.Proxy.Credentials = CredentialCache.DefaultCredentials; 

Fonctionne bien !!.

Si vous devez consommer à partir de l'emplacement https, ajoutez cette configuration:

<message clientCredentialType="Certificate" algorithmSuite="Default" />

Ajout de la référence:

Assurez-vous que vous ajoutez la référence comme celle-ci. Vous devez cliquer sur "Add Service Reference", aller à "Advanced"Et enfin cliquez sur"Add Web Reference".

Puis ajoutez ce qui suit:

http://***/service1.asmx

Pour port 8080 tu utilises:

http://***:8080/service1.asmx

Configurez le proxy de votre service Web:

Pour vous assurer que le service Web utilise votre Internet Explorer proxy vous pouvez ajouter ce qui suit à votre Web ServiceObjet sur votre application client.

webService1.Proxy = WebRequest.GetSystemWebProxy();

Vous pouvez également configurer le proxy manuellement:

webService1.Proxy = new WebProxy("hxxp://my-proxy-settings:8080/");

Ntlm

Si vous utilisez NTLM, vous devrez probablement vous assurer que vous utilisez également les informations d'identification par défaut sur votre projet client. Vous pouvez facilement le faire en le transmettant lors de la création de la série Web en utilisant UseDefaultCredentials mis à true.

public webService _webService = new webService() { UseDefaultCredentials = true };

Vous pouvez également désactiver l'authentification NTLM pour votre projet de service Web. Vous pouvez le faire sous Project Properties -> Web. Si vous décochez cette option, vous devriez pouvoir ajouter le service Web sans avoir à s'authentifier.

http://msdn.microsoft.com/en-us/library/aa378749.aspx

Je ne peux pas créer automatiquement la référence du service Web à l'aide de VS2010. Je décide d'utiliser l'outil wsdl.exe, et dans le paramètre nommé / paramètres passer le fichier XML avec des informations d'identification du serveur proxy

wsdl.exe service http: // uri / service1.asmx /parameters:c:ttempwsdlparameters.xml

Wsdl.exe générer un fichier Service1.cs (par défaut). J'ajoute ce fichier à mon projet et je l'utilise comme ceci:

WebProxy wp = new WebProxy(@"YourProxyServer",ProxyPort);
wp.Credentials = new NetworkCredential("USERNAME", "PASSWORD");
Service1 service1 = new Service1();
service1.Proxy = wp;
service1."YourServiceMethod"();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top