visual studio generate from example datapower create consumir c# web-services proxy

c# - studio - web service proxy datapower



¿Es posible especificar credenciales de proxy en su web.config? (4)

Los servicios de directorio / búsquedas LDAP se pueden usar para cumplir este propósito. Implica algunos cambios a nivel de infraestructura, pero la mayoría de los entornos de producción tienen tal disposición

Necesito configurar un sitio web para acceder a un servicio web en otra máquina, a través de un proxy. Puedo configurar el sitio web para usar un proxy, pero no puedo encontrar una manera de especificar las credenciales que requiere el proxy, ¿es posible? Aquí está mi configuración actual:

<defaultProxy useDefaultCredentials="false"> <proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" /> </defaultProxy>

Sé que puedes hacerlo a través de un código, pero el software que está ejecutando es un CMS de código cerrado, así que no puedo hacerlo.

¿Hay alguna manera de hacer esto? MSDN no me está ayudando mucho ...


Puede especificar credenciales agregando una nueva Credencial genérica de su servidor proxy en el Administrador de credenciales de Windows:

1 en Web.config

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

  1. En Credential Manager >> Agregar una Credencial Genérica

Internet o dirección de red: su dirección proxy
Nombre de usuario: tu nombre de usuario
Contraseña: pasas

Esta configuración funcionó para mí, sin cambiar el código.


Sí, es posible especificar sus propias credenciales sin modificar el código actual. Sin embargo, requiere una pequeña porción de código de su parte.

Cree un ensamblado llamado SomeAssembly.dll con esta clase:

namespace SomeNameSpace { public class MyProxy : IWebProxy { public ICredentials Credentials { get { return new NetworkCredential("user", "password"); } //or get { return new NetworkCredential("user", "password","domain"); } set { } } public Uri GetProxy(Uri destination) { return new Uri("http://my.proxy:8080"); } public bool IsBypassed(Uri host) { return false; } } }

Agregue esto a su archivo de configuración:

<defaultProxy enabled="true" useDefaultCredentials="false"> <module type = "SomeNameSpace.MyProxy, SomeAssembly" /> </defaultProxy>

Esto "inyecta" un nuevo proxy en la lista, y como no hay credenciales predeterminadas, la clase WebRequest llamará primero a su código y solicitará sus propias credenciales. Deberá colocar el ensamblado SomeAssembly en el directorio bin de su aplicación CMS.

Este es un código de alguna manera estático, y para obtener todas las cadenas, como el usuario, la contraseña y la URL, puede que necesite implementar su propia ConfigurationSection o agregar cierta información en AppSettings , que es mucho más fácil.


Si bien no he encontrado una buena manera de especificar credenciales de red proxy en el web.config, puede encontrar que todavía puede usar una solución que no sea de codificación, al incluir esto en su web.config:

<system.net> <defaultProxy useDefaultCredentials="true"> <proxy proxyaddress="proxyAddress" usesystemdefault="True"/> </defaultProxy> </system.net>

El ingrediente clave para poner esto en marcha es cambiar la configuración de IIS, asegurando que la cuenta que ejecuta el proceso tenga acceso al servidor proxy. Si su proceso se está ejecutando bajo LocalService o NetworkService, probablemente esto no funcionará. Lo más probable es que quieras una cuenta de dominio.