[CodeSnippet] Enviar cuando correo cuando el usuario use Internet Explorer 6 (IE6)

Internet Explorer 6, es una de esas piedritas por la que a veces uno tiene que pensar, ¿damos soporte para IE6 o no?, claro hablando de diseño.

En un proyecto actual para una intranet, hemos decidido no dar soporte para IE6, no estresarnos haciendo diseños web paralelos. IE6, fue lanzado allá por el 2001, y como que ya va siendo hora de ni siquiera mencionarlo cuando definamos los navegadores a soportar por nuestra web. [Extra]: Mató IE6 la marca Internet Explorer??.

Regresando al tema, no vamos a bloquear a los usuarios que ingresen con IE6, lo que vamos hacer es enviar un email a Soporte, para actualizar a los usuarios que aún están usando IE6.

   1:  

   2: public static void ValidarIExplore()

   3: {

   4:   if (HttpContext.Current.Request.Browser.Type.ToUpper() == "IE6")

   5:   {

   6:     String fromEmail = ConfigurationManager.AppSettings["emailAdmin"];

   7:     String toEmail = ConfigurationManager.AppSettings["emailSoporte"];

   8:     String subject = String.Format(

   9:           "[{0}], necesita actualizar internet explorer", 

  10:           HttpContext.Current.User.Identity.Name);

  11:     String message = String.Format(

  12:             @"Sres. de soporte, <br/> El usuario {0} necesita actualizar [...] ",

  13:             HttpContext.Current.User.Identity.Name);

  14:  

  15:     SendEmail(fromEmail, toEmail, subject, message);

  16:   }

  17: }

El método es sencillo, y como tengo una página base para todos mis formularios web, aplico lo siguiente:

   1:  

   2: public abstract class ReportPageBase : System.Web.UI.Page

   3: {

   4:   protected void Page_Load(object sender, EventArgs e)

   5:   {

   6:     //si no esta logueado reenviarlo

   7:     if (!User.Identity.IsAuthenticated) { Response.Redirect("~/login.aspx"); }

   8:  

   9:     //validar browser

  10:     Helper.ValidarIExplore();

  11:     

  12:     //other code

  13:   }

  14: }

Para enviar correos desde ASP.NET, consulte la siguiente entrada.

Saludos,

Ejemplos de base de datos para SQL Server

 Ejemplos de Base de Datos - SQL Server

De vez en cuando, hay la oportunidad de revisar uno que otro proyecto Web ASP.NET disponible en la Web, para aprender de su Know-how. Es una manera rápida para aprender de golpe el desarrollo de aplicaciones Web.

Debido a que pienso usar algunas de estas base de datos, para posts futuros, voy a colgarlas en un nuevo proyecto que estoy usando, Gallery Server PRO (pendiente un post con la revisión de este site).

Las base de datos disponibles que he tenido la oportunidad de revisar, las que recuerdo y que sean open source, son las siguientes:

  1. La archi-conocida, Northwind, que es una especie de modelo ordenes de venta (maestro-detalle), y que puede registrar Productos, Clientes, y Vendedores.
  2. La archi-conocida, Pubs, para editoriales que deseen guardar información de libros, empleados, autores, y la venta de libros. Obviamente no es un modelo complejo, simplifica algunas funcionalidades, pero que puede ser un punto de partida si nos estamos iniciando.
  3. TheBeerHouse, proyecto en CodePlex, que maneja foros, artículos, encuentas, además de ofertar productos a la venta (seguimiento de la orden). Por cierto hay una nueva versión, que incluye este portal usando ASP.NET MVC.
  4. Classifieds, de uno de los tantos Starter Kit, y que básicamente podemos guardar clasificados para anunciarlos en nuestro web, además incluye administración de imagenes por clasificado.
  5. BlogEngine, es conocido motor de blog, y que permite manejar posts, comentarios, categorías, tags, y páginas.

Si quieren descargar los queries para la creación de alguna de estas base de datos, pueden hacerlo desde el siguiente enlace: SQL Server – Base de Datos Ejemplos (Powered by Gallery Server Pro)

P.D.: Si tienen sugerencia de alguna más, me avisan.

P.D.2: Recuerden que siempre es mejor visitar el sitio oficinal para tener la última versión de la base de datos, pero este es mi backup personal para el uso de estas base de datos, además de tener el enlace directo, y no tener que descargar todo el proyecto para tener la base de datos.

Saludos,

[CodeSnippet] Leer archivos ANSI en .Net (cuando C# no lee la enie)

Hace meses comentábamos sobre la integración de sistemas de información, y es que cuando empiezas a interactuar con otros sistemas te das cuenta que no todos trabajan de la misma forma que tu, ni todos usan los mismos estándares. Y lo mismo pasa con la codificación de archivos.

Y parece un tema trivial, pero imaginad que estas cargando unos clientes a tu sistema que vinieron en un archivo con formato ANSI, y alguno de los clientes se apellida Nuñez. En la reuniones de análisis, nunca se determino el formato del archivo. Así que el programador abrió el archivo como siempre le ha funcionado:

   1: using (StreamReader rd = new StreamReader("rutaArchivo")) 

El archivo se cargo exitosamente al sistema, después de unas semanas al cliente le llega su recibo de facturación y su apellido no dice Nuñez, dice Nu?ez.

Seguramente responsabilizaran al programador, por programar “mal”, y bueno, en parte tiene responsabilidad por no preguntar cual era la codificación a usar. Pero también la tiene el analista o persona que no definió correctamente el contrato de servicio para intercambiar información. Se debió especificar que se iba a usar un formato en específico, o hacer que el tipo de codificación sea parametrizable.

Para leer correctamente las cadenas, debemos agregar un atributo al constructor del StreamReader/Writer. Usaremos el siguiente ejemplo, dos archivos con el mismo contenido, pero guardados en distinta codificación:

Archivos ANSI UTF8 - Geeks.ms

   1: //leyendo por defecto

   2: String fileANSI = @"....FilesEjemplo_ANSI.txt";

   3: String fileUTF8 = @"....FilesEjemplo_UTF8.txt";

   4: using (StreamReader rdDefault = new StreamReader(fileANSI))

   5: {

   6:   Console.WriteLine("Usando StreamReader Default para leer ANSI: ");

   7:   Console.Write(rdDefault.ReadToEnd());

   8:   Console.WriteLine("n----------------n");

   9: }

  10: using (StreamReader rdDefault = new StreamReader(fileUTF8))

  11: {

  12:   Console.WriteLine("Usando StreamReader Default para leer UTF8: ");

  13:   Console.Write(rdDefault.ReadToEnd());

  14:   Console.WriteLine("n----------------n");

  15: }

  16:  

  17: //leyendo en ANSI

  18: using (StreamReader rdDefault = 

  19:        new StreamReader(fileANSI, Encoding.GetEncoding(1252)))

  20: {

  21:   Console.WriteLine("Usando StreamReader ANSI para leer ANSI: ");

  22:   Console.Write(rdDefault.ReadToEnd());

  23:   Console.WriteLine("n----------------n");

  24: }

  25: using (StreamReader rdDefault = 

  26:        new StreamReader(fileUTF8, Encoding.GetEncoding(1252)))

  27: {

  28:   Console.WriteLine("Usando StreamReader ANSI para leer UTF8: ");

  29:   Console.Write(rdDefault.ReadToEnd());

  30:   Console.WriteLine("n----------------n");

  31: }     

El resultado será el siguiente:

http://sergiot2.com/blogimages/2010/04Abr/06_CSharp_StreamReader_ANSI.JPG

Descargar solución ejemplo: Leer archivos ANSI desde C#.

Otros artículos referentes a la codificación de los archivos:

Saludos,