Pregunta

Estoy usando VS2010. En una aplicación de consola simple intento agregar una referencia de servicio a http://***/service1.asmx , antiguo servicio ASMX. Mi computadora está detrás de un servidor proxy, así que recibo un error:

"El servidor remoto devolvió una respuesta inesperada: (407) Se requiere autenticación proxy".

Cuando estoy usando la herramienta WSDL, no puedo definir el número de puerto del servidor proxy y recibo el mensaje de ese servidor, para el examen 10.0.0.3:80, no respondí, pero necesito especificar el puerto 8080 y no sé cómo. ¿Cómo podría crear una referencia?

¿Fue útil?

Solución

Eche un vistazo a los enlaces a continuación para especificar la dirección proxy y el puerto del servidor al agregar una referencia web.

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

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

Para agregar una referencia a un ASMX

  1. Haga clic derecho en la aplicación de la consola y seleccione Agregar referencia de servicio.

  2. Haga clic en el botón Avanzado e ingrese la dirección ASMX en la barra de direcciones. Haga clic en el botón verde al lado para descubrir el ASMX.

  3. Dale un nombre y haga clic en Agregar ref.

Actualización: intente actualizar la configuración de la aplicación web y la configuración y agregar;

<system.net>

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

</defaultProxy>

</system.net>

Otros consejos

Pasé casi 50 horas encontrando el problema, no pude encontrar en ninguna parte de la web esta solución simple.

En la sección "Configuración" en Web.Config Agregar esto:

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

¡Entonces funciona como un encanto!

También puede hacerlo desde el código detrás:

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

Funciona hermoso !!.

Si necesita consumir desde la ubicación HTTPS, agregue esta configuración:

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

Agregar la referencia:

Asegúrese de agregar la referencia de esta manera. Debe hacer clic en "Add Service Reference", ir "Advanced"Y finalmente haga clic en"Add Web Reference".

Luego agregue lo siguiente:

http://***/service1.asmx

Para port 8080 tu usas:

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

Configurar el proxy para su servicio web:

Para asegurarse de que el servicio web esté utilizando su Internet Explorer proxy Puede agregar lo siguiente a su Web ServiceObjeto en la aplicación de su cliente.

webService1.Proxy = WebRequest.GetSystemWebProxy();

También puede configurar el proxy manualmente:

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

Ntlm

Si usa NTLM, probablemente deberá asegurarse de usar las credenciales predeterminadas en el proyecto de su cliente también. Puede hacerlo fácilmente pasándolo al crear el serivce web usando UseDefaultCredentials ajustado a true.

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

También puede deshabilitar la autenticación NTLM para su proyecto de servicio web. Puedes hacer esto bajo Project Properties -> Web. Si desmarca esta opción, debería poder agregar el servicio web sin tener que autenticarse.

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

No puedo crear automáticamente la referencia de servicio web usando VS2010. Decido usar la herramienta wsdl.exe, y en el parámetro nombrado /parámetros pase el archivo XML con credenciales del servidor proxy

wsdl.exe http: // servicio uri /servicio1.asmx /parameters:c:tempwsdlParameters.xml

WSDL.EXE Genere un archivo Service1.cs (predeterminado). Agrego este archivo a mi proyecto y lo uso así:

WebProxy wp = new WebProxy(@"YourProxyServer",ProxyPort);
wp.Credentials = new NetworkCredential("USERNAME", "PASSWORD");
Service1 service1 = new Service1();
service1.Proxy = wp;
service1."YourServiceMethod"();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top