Domanda

Sto usando VS2010. In una semplice app console provo ad aggiungere un riferimento al servizio a http://***/service1.asmx , Old ASMX Service. Il mio computer è dietro un server proxy, quindi ricevo un errore:

"Il server remoto ha restituito una risposta imprevisto: (407) Autenticazione proxy richiesta."

Quando sto usando lo strumento WSDL non riesco a definire il numero di porta del server proxy e ricevo messaggio quel server, per Examle 10.0.0.3:80, non ho risposto, ma devo specificare la porta 8080 e non so come. Come potrei creare un riferimento?

È stato utile?

Soluzione

Dai un'occhiata ai collegamenti seguenti per specificare l'indirizzo proxy e la porta del server quando si aggiunge un riferimento Web.

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

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

Per aggiungere un riferimento a un ASMX

  1. Fare clic con il tasto destro sull'app console e selezionare Aggiungi riferimento al servizio.

  2. Fare clic sul pulsante avanzato e inserire l'indirizzo ASMX nella barra degli indirizzi. Fai clic sul pulsante verde accanto ad esso per scoprire ASMX.

  3. Dagli un nome e fai clic su Aggiungi rif.

AGGIORNAMENTO: prova ad aggiornare la configurazione Web/ app config e aggiungi;

<system.net>

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

</defaultProxy>

</system.net>

Altri suggerimenti

Ho trascorso quasi 50 ore a trovare il problema, non sono riuscito a trovare da nessuna parte sul web questa semplice soluzione.

Nella sezione "Configurazione" in web.config Aggiungi questo:

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

Quindi funziona come un fascino!

Puoi anche farlo dal codice dietro:

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

Funziona bene !!.

Se è necessario consumare dalla posizione HTTPS, aggiungi questa configurazione:

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

Aggiunta del riferimento:

Assicurati di aggiungere il riferimento in questo modo. Devi fare clic su "Add Service Reference", vai a "Advanced"E infine fare clic su"Add Web Reference".

Quindi aggiungi quanto segue:

http://***/service1.asmx

Per port 8080 usate:

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

Imposta il proxy per il tuo servizio Web:

Per assicurarsi che il servizio Web stia utilizzando il tuo Internet Explorer proxy Puoi aggiungere quanto segue al tuo Web Serviceoggetto sull'applicazione client.

webService1.Proxy = WebRequest.GetSystemWebProxy();

Puoi anche impostare manualmente il proxy:

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

Ntlm

Se usi NTLM, probabilmente dovrai assicurarti di utilizzare anche le credenziali predefinite sul progetto del tuo client. Puoi facilmente farlo trasmettendolo quando crei il Web Serivce utilizzando UseDefaultCredentials impostato true.

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

Puoi anche disabilitare l'autenticazione NTLM per il tuo progetto di servizio web. Puoi farlo sotto Project Properties -> Web. Se non controlla questa opzione, dovresti essere in grado di aggiungere il servizio Web senza dover autenticare.

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

Non riesco a creare automaticamente riferimento al servizio Web utilizzando VS2010. Decido di utilizzare lo strumento wsdl.exe e nei parametri denominati /parametri passano il file XML con credenziali del server proxy

wsdl.exe http: // servizio Uri /Service1.Asmx /Parameters:c:TempwsdlParameters.xml

Wsdl.exe genera un file service1.cs (impostazione predefinita). Aggiungo questo file al mio progetto e lo uso in questo modo:

WebProxy wp = new WebProxy(@"YourProxyServer",ProxyPort);
wp.Credentials = new NetworkCredential("USERNAME", "PASSWORD");
Service1 service1 = new Service1();
service1.Proxy = wp;
service1."YourServiceMethod"();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top