lunes, 24 de noviembre de 2008

Problemas con viewsate MAC en entornos compartidos

El otro día me encontré con el siguiente error:

"Validation of viewsate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. Autogenerate cannot be used in a cluster. "

Este problema surge cuando realizas una validación de usuarios en entorno un WebFarm o Cluster y cada aplicación autogenera una machineKey como su identificador. Concretamente esta configuración provoca que si varias aplicaciones web, con validación de usuarios, conviven en el mismo servidor, al realizar una validación de usuario con el mismo sistema, se les va autogenerando la machineKey, y claro, ¿que pasaria cuando se produzca el hecho que las machineKeys coincidan? La respuesta es sencilla, el error de arriba. Así mismo, otro problema colateral con el que me encontré, era el hecho que de repente las variables de sesión se quedaban sin valor.

Después de investigar encontré estas tres soluciones:
  1. Deshabilitar ViewState en el Web.Config añadiendo lo siguiente dentro de :
    <system.web> <pages enableviewstatemac="false">
  2. Deshabilitar ViweState en las páginas añadiendo lo siguiente en la cabecera de los archivos aspx: enableViewStateMac="False".
  3. <%@ Page Language="c#" AutoEventWireup="false" Codebehind="MyPage.aspx.cs" Inherits="MyAssembly.MyPage" enableViewStateMac="False" %>

  4. Evitar que el pool cree el MachineKey para la aplicación, se le asigna uno manualmenteen el web.config. Para este punto la siguiente web los crea: http://aspnetresources.com/tools/keycreator.aspx

<machineKey validation="SHA1" validationKey="F3690E7A3143C185A6A8B4D81FD55DD7A69EEAA3B32A6AE813ECEEC" />

Configuraciones IIS

Esta semana he estado desplegando en producción un nuevo aplicativo web (a partir de ahora le llamaré portal) en un cliente. Este nuevo portal complementa a otros tres existentes, pero con la peculiaridad que estos tres portales comparten dominio, mientras que el nuevo se tenía que publicar en un dominio distinto.


Así mismo, el cliente puso otros requerimientos a la hora de desplegar el portal:


  1. Ambos portales debían ir sobre el puerto 80.

  2. El servidor donde estaría publicado el portal solo tenía una IP pública para ambos portales.


Vistos los requerimientos me puse a investigar un poco, y descubrí una serie de cosas interesantes que me gustaría compartir.


El hecho de que el nuevo portal perteneciera a un dominio distinto, me implicó crear un nuevo WebSite en el IIS. Para diferenciar completamente este nuevo WebSite del otro ya existente, creé un nuevo Application Pool, cogiendo como base el de los otros portales para que fueran iguales, y se lo asigné al nuevo WebSite.


Una vez hecho esto, se tenía que diferenciar las peticiones que iban al WebSite existente con las que iban al nuevo. Para ello utilicé la propiedad HOST HEADER de los Web Sites. Detallaré los pasos:

  1. Crear el nuevo WebSite configurándolo normalmente, eso si, cada uno de los sitios va a estar en una carpeta diferente.
  2. Una vez que tenemos todos los sitios creados. Haces botón derecho sobre el primer sitio, y en propiedades, en la solapa "Web Site", junto a la ip hay un boton "Advanced". Ahora, en la ventana de "Advanced Multiple Web Site Configuration", en la subventana "Multiple identities for this web site", seguramente vas a encontrar una linea que tiene 3 campos: ip address, tcp port, Host Header Name.

* En IP address, seguramente diga "(All Unassigned)", no hace falta cambiar eso.

* El TCP port 80.

* En Host Header Name , le pones el dominio que quieras para ese sitio ejemplo:
www.raona.com/


Repetir lo mismo con cada uno de los sitios.


Veamosló graficamente:

Beyond the PMP

Raona dentro de su plan de carrera ha apostado por dar la posibilidad a sus ingenieros a elegir en que área desean crecer y orientar su formación y su especialización en este sentido. Yo he decidido elegir la vía del Project Management ya que es algo que me ha gustado desde siempre, y por ello he decidido obtener la certificación de PMP.
Sé que muchos no habréis oído hablar del PMP, pero intentaré resumirlo en unas pocas líneas. PMP es la abreviatura de Project Management Professional, una certificación que otorga el Project Management Institute (PMI), a aquellos profesionales que demuestran un conocimiento de las best practices que propone. ¿Qué lio de siglas verdad? Lo intentaré de nuevo…

El PMI es una institución fundada en 1969 que desde esa fecha ha desarrollado un conjunto de estándares para el project managent (no penséis solo en el ámbito de la informática, si no en cualquier área donde exista un proyecto) en todo el mundo. El elemento base es la PMBOK Guide (ya va por la tercera edición), que es mundialmente reconocida y está aprobada como estándar para el project management por el American National Institute (ANSI).

Esta institución otorga una certificación a aquellos profesionales que acreditan conocimiento de las best practices expuestas por el PMI. Esto significa que el profesional certificado ha pasado un proceso de estudio y formación. Además el profesional acepta un Código de Ética que rige su forma de trabajar en su profesión y entorno.

En el camino para obtener la certificación el pasado mes de septiembre estuve en Madrid en un curso preparatorio para el examen de PMP. Este curso me ha servido para obtener los conocimientos base para poder obtener la certificación y conseguir unos créditos obligatorios (PDU’s) para ser PMP.

Así mismo, ya he superado los requisitos mínimos de experiencia profesional y de formación, y actualmente estoy a la espera de realizar el examen. Este será el paso final para ser reconocido oficialmente como PMP.

Para más información: http://www.pmi.org/

viernes, 7 de noviembre de 2008

Acceder a Oracle con SSIS

Aunque ya llevo años trabajando con SSIS, este mes he trabajado por primera vez integrando una base de datos Oracle.

La necesidad era migrar datos de un origen de datos de un ERP cuyo motor de base de datos es un Oracle, hacia un primer esbozo de DataWarehouse sobre un SQL Server 2005, utilizando procesos ETL creados con SSIS.

Mis primeras dudas eran como acceder al origen de datos Oracle que se encuentra en un servidor Linux. La verdad es que la cosa fue más fácil de lo que pensaba, gracias a un documento que encontre por internet, y que explica cómo trabajar con SSIS 2008 y Oracle 10g (aunque me yo seguí los pasos para SSIS 2005 y Oracle 9g y funcionó). Os adjunto el link:

Resumiendo el documento, para trabajar con SSIS y Oracle, simplemente se ha de instalar, en los entornos de trabajo, el cliente de Oracle con sus opciones básicas más Oracle Windows Interfaces y Oracle .Net. Una vez instalado, y configurado siguiendo los pasos del documento, se puede conectar sin problemas con Oracle desde SSIS.