Configurar credenciales del proxy en el web.config

Si tenemos una aplicación que necesita hacer uso de Internet y nos encontramos con un proxy, es necesario especificar de alguna manera la dirección del mismo. Si además es necesario hacer uso de unas credenciales para que se nos autorice el acceso, debemos especificar más valores en la configuración.

Cuando solamente se realiza una llamada desde nuestro código a Internet, podemos pensar que esta podría ser una solución válida:

[csharp]var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
var proxy = new WebProxy(Settings.Default.UrlProxy);

proxy.Credentials = new NetworkCredential(Settings.Default.UserProxy,
                                          Settings.Default.PasswordProxy,
                                          Settings.Default.DomainProxy);
httpWebRequest.Proxy = proxy;[/csharp]

Sin embargo, puede que esta no sea la forma más correcta cuando necesitamos hacer distintas peticiones en distintos puntos de nuestra aplicación. ¿Cuál sería la mejor solución? Definir un módulo dentro de la sección <defaultProxy> del archivo de configuración. En él especificaremos una clase donde implementaremos la interfaz IWebProxy como muestro a continuación:

[csharp]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using Utils.Properties;

namespace Utils
{
    public class Proxy : IWebProxy
    {
        public ICredentials Credentials
        {
            get
            {
                return new NetworkCredential(Settings.Default.UserProxy,
                                            Settings.Default.PasswordProxy,
                                            Settings.Default.DomainProxy);
            }
            set { }
        }

        public Uri GetProxy(Uri destination)
        {
            return new Uri(Settings.Default.UrlProxy);
        }

        public bool IsBypassed(Uri host)
        {
            return false;
        }
    }
}[/csharp]

Por último, añadimos las siguientes líneas en el web.config, dentro de <configuration> para que, cada vez que creemos una petición con WebRequest, automáticamente utilice esta configuración.

[xml]<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="false">
      <module type="Utils.Proxy, Utils" />
    </defaultProxy>
 </system.net>[/xml]

¡Saludos!

2 Comments

  1. sebastian septiembre 19, 2010 at 9:26 pm

    que bueno que volviste a escribir, el otro sitio ya no tenia info…

    Reply
    1. Gisela septiembre 19, 2010 at 10:21 pm

      Gracias por tu comentario Sebastián 🙂 El caso es que ahora estoy de baja laboral por problemas de espalda y no puedo dedicarle todo el tiempo que me gustaría 🙁 Espero que se solucione pronto y vuelva publicar más a menudo.

      ¡Saludos!

      Reply

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.