viernes, 28 de noviembre de 2014

Usar HttpContext desde Librería de Clases - Using HttpContext from class library

Para usar HttpContext en una librería de clases primero debemos añadir la referencia System.Web en el proyecto. Luego importar el ensamblado System.Web en la clase donde lo vamos a usar.
using System.Web;
En este caso estoy creando un método estático que me obtenga la dirección IP de un equipo.
    public static string GetIpCliente(System.Web.HttpContext contexto)
    {           
        string IP4Address = String.Empty;

        foreach (IPAddress IPA in Dns.GetHostAddresses(contexto.Request.UserHostAddress))
        {
          // CODIGO
        }
   }
El propósito del procedimiento lo explique en una entrada anterior, por si les interesa verlo es la siguiente: obtener el nombre del equipo y la dirección IP
Volviendo al tema, para usar el método desde un proyecto ASP (MVC o WebForms) sería de la siguiente manera:
    String ip = Utilitarios.GetIpCliente(System.Web.HttpContext.Current);
Aquí Utilitarios es una clase estática (no es necesario instanciarla para poder acceder a sus métodos estáticos públicos) y lo que se le pasaría al método GetIpCliente es el HttpContext de la actual solicitud HTTP a la aplicación web.
C#
Posted by InfoTacticas Soluciones  |  No comments

11/28/2014 07:55:00 a. m. Share:

0 comentarios:

jueves, 20 de noviembre de 2014

Obtener el Nombre del equipo y la Direccion IP en C# - How to Get User IP address using C#

Para obtener el nombre de una computadora y su IP en C# utilizaremos el namespace System.net el cual provee una interface de programación simple para muchos de los protocolos de redes usados actualmente y los metodos GetHostNameGetHostAddresses. El primer metodo obtiene el nombre de la computadora local y retorna un valor de tipo string. Mientras que el segundo método obtiene la IP de una computadora a partir del nombre de la computadora y devuelve un valor por medio de un arreglo de tipo IPAddress (un arreglo de bytes).

Un inconveniente en la captura de la dirección IP es que hay diferencias en el formato de dirección IP entre la IP versión 4 y la IP versión 6. Cuando el protocolo IPv4 es el único protocolo habilitado en el servidor web, el acceso a la dirección IP en las Cabeceras de la Solicitud retornarán la dirección IPv4 habitual. Sin embargo, si IPv6 está también habilitada, se impondrá sobre IPv4. Los Sistemas Operativos Windows a partir de Windows Vista traen habilitado por defecto IPv6.

En el código presentado a continuación se verifica si la dirección devuelta es del formato IPv6, también se verifica si se está ejecutando en un equipo local, en cuyo caso devolverá "127.0.0.1" (IPv4) o ::1 (IPV6), en esos casos se procede a obtener la dirección IP a partir del nombre de la computadora y en un formato IPv4.

Espero les sea de utilidad el código.
     public static string GetIpCliente(System.Web.HttpContext contexto)
     {            
         string IP4Address = String.Empty;

         foreach (IPAddress IPA in Dns.GetHostAddresses(contexto.Request.UserHostAddress))
         {
            if (IPA.AddressFamily.ToString() == "InterNetwork" || IPA.AddressFamily.ToString() == "InterNetworkV6")
            {
                IP4Address = IPA.ToString();
                break;
            }
         }

         if (IP4Address != "127.0.0.1" && IP4Address != "::1" ) //String.Empty
         {
            return IP4Address;
         }

         foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
         {
            if (IPA.AddressFamily.ToString() == "InterNetwork")
            {
                IP4Address = IPA.ToString();
                break;
            }
         }
         return IP4Address;
            
    }  
Más información: http://www.4guysfromrolla.com/articles/071807-1.aspx
C# IP
Posted by InfoTacticas Soluciones  |  No comments

11/20/2014 02:18:00 a. m. Share:

0 comentarios:

back to top