Donde está la pestaña de ASP.NET del IIS ???

Me encontraba yo instalando una aplicación Web ASP.NET 2.0 en Windows Server 2003 y al abrir el administrador del IIS no vi la pestaña de selección de la versión de ASP.NET. Lo primero que pensé fue que no tenía instalado el Microsoft Framework 2.0 o que tendría que reinstalarlo con Aspnet_regiis.exe para que apareciera la tan querida pestaña.

 

Pero mi sorpresa aún fue mayor cuando descubrí que el servidor si tenía instalado el Framework 2.0, pero no solo eso, sino que también tenia la versión de 64bits, uff!!

 

Mi primera instalación en un servidor de 64 y ya comenzamos mal.


 



 


Después de navegar un poco por la red en busca de información sobre como solucionar mi problema vi soluciones muy rudimentarias como modificar el registro de Windows para trabajar con la versión correcta.

 

Finalmente parece que el soporte de Microsoft ha facilitado unas cuantas posibilidades para solucionar este bug del IIS en el servidor de 64bits.

 Cómo cambiar entre las versiones de 32 bits de ASP.NET 1.1 y la versión de 64 bits de ASP.NET 2.0 en una versión de 64 bits de Windows. 

Mi problema finalmente se ha solucionado haciendo correr ASP.NET con la versión 32bits en el servidor.

 

  1. Escriba el comando siguiente para habilitar el modo de 32 bits:
 cscript %SYSTEMDRIVE%inetpubadminscriptsadsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 

  1. Escriba el comando siguiente para instalar la versión de ASP.NET 2.0 (32 bits) e instalar las asignaciones de secuencias de comandos en la raíz de IIS y más abajo:
 %SYSTEMROOT%Microsoft.NETFrameworkv2.0.50727aspnet_regiis.exe -i  

  1. Asegúrese de que el estado de ASP.NET versión 2.0 (32 bits) es Permitido en la lista Extensión de servicio Web, en el Administrador de Servicios de Internet Información Server.
 

Proyecto ASP.Net 2.0 32bits funcionando correctamente en un servidor de 64bits!!

 

Saludos.


 


Crosposting de http://www.lonetcamp.com


 


 


 


 

Los Héroes de LoNetCamp

Microsoft ha lanzado una gran campaña para dar a conocer sus nuevos productos Visual Studio 2008, SQL Server 2008 y Windows Server 2008 por todo el mundo ( Heroes happen here ) y a los lideres de grupos como el de Tarragona nos han dado la oportunidad de acceder a material para poder investigar y prepara eventos sobre sus productos.


En Tarragona conscientes de que todos los que formamos el grupo somos héroes y luchamos diariamente para que nuestras ilusiones y esfuerzos sigan hacia delante, este viernes organizamos una cena para conocernos mejor y dar la bienvenida a los nuevos miembros.


La cena fue un completo éxito en asistencia y en compromisos. Seguro que siempre que contemos con gente dispuesta ha prestar su tiempo y su esfuerzo para que los demás podamos aprender podremos seguir con el grupo.


Por eso en la cena regalamos un Windows Vista y un pack de Héroes con un Windows Server2008, Visual Studio 2008 y un SQL 2008 y esperamos poder seguir premiando a estos voluntarios que son los que realmente hacen que este tipo de proyectos puedan ser una realidad.


Esperamos poder seguir contando con nuestros héroes cotidianos y sumar en experiencia y conocimientos, espero poder verte en la próxima ;-).


 


 


 


Más Fotos…

AJAX TabControl – Tabs Optimizados II

 


En un artículo anterior explique como optimizar los TabPanels de ASP.NET AJAX Control Toolkit   sin tener que extender ni modificar una línea de código, tan solo aprovechando la funcionalidad del UpdatePanel y cargar la información de los tabs solo cuando se selecciona y no cargar todos los datos al principio.

 

Pero si utilizas este truco junto a un UpdatePogress te das cuenta que al cargar la primera vez los datos no muestra el contenido del UpdatePogress y da una mala sensación de retraso al mostrar los datos.


 






Pero si luego lanzamos eventos que actualizan el UpdatePanel si se muestra el UpdatePogress correctamente.

  

Después de darle un par de vueltas encontré una solución lo bastante interesante como para poderlo utilizar en otras situaciones.

 

Nosotros cuando tenemos un UpdatePogress en una página le decimos a que panel está asociado.


 


 



 


Cuando el panel cambia el UpdatePogress se lanza pero si no le asignamos ningún UpdatePanel cada vez que se actualice un panel indiferentemente cual sea se mostrará  el UpdatePogress.

 

Entonces tenemos dos opciones:

 

  1. No asignamos ningún panel al control y entonces la primera y cada vez que se actualice el tab mostrará correctamente el UpdatePogress.
  2. Al cargar los datos del tab le asignamos el panel por si queremos tener diferentes UpdateProgress para diferentes Panels.
  

Bueno espero que para los que os encontréis con estos pequeños inconvenientes diarios os pueda ayudar. 😉


 


CrossPosting: www.lonetcamp.com


 


 

Cerrar el formulario Principal sin cerrar la aplicación C#

En el foro de MSDN ha habido un pique sano sobre los lenguajes de programación VB.Net Vs C# yo como representante de los de ; quiero responder al reto de poder cerrar el formulario principal de una aplicación Windows sin cerrar la aplicación entera  ni ocultar este formulario.

 

Mi propuesta es:

 

Toda aplicación Windows empieza por la función Main() que es la entrada de la aplicación y la encargada de lanzar el formulario principal.

  

Entonces que pasaría si no abrimos directamente el formulario y solo abrimos el contexto para la aplicación?

 ApplicationContext (Clase)

Especifica información contextual sobre un subproceso de aplicación.


Espacio de nombres: System.Windows.Forms

 

Primero crearemos la clase que utilizaremos para manejar los formularios

 

 

Lo más importante es que herede de ApplicationContext para poderla utilizar para arrancar la aplicación.

 

Crearemos un par de formularios para demostrar la funcionalidad.

 

 

Finalmente en la entrada de la la aplicación utilizaremos nuestra clase personalizada.

 

 

Y ya podemos cerrar los formularios que queramos que la aplicación sigue funcionando. Solo nos quedaría mejorar nuestra clase para saber si tenemos todos los formularios cerrados terminar con la aplicación.

 

Os adjunto el ejemplo y espero el siguiente reto de los de VB ;-).


 


Reto Foro MSDN

 

Saludos.

CatDotNet como Asociación

Este pasado miércoles acudimos a la cena que organizo CatDotnet, el grupo de usuarios de Cataluña Central para constituirse como asociación legal.


Estamos seguros que este grupo va a dar mucho de que hablar por su materia prima, empezando por su nuevo presidente José Miguel Torres y siguiendo por toda la cúpula como Lleonar del Rio seguro que nos van a sorprender con fabulosas charlas.


Realmente las personas que han cogido las riendas del grupo hacen un equipo impresionante, gente como Lluis Sánchez (Novell, Mono & MonoDevelop Developer Team), Diego Gómez Business Productivity Advisor del Centro Microsoft de Innovación en Productividad, que está situado en Manresa, pero no puedo nombrar a todos porque mi memoria no es tan buena como me gustaría. Pero la mayor sorpresa de la noche fue encontrarme con Daniel Mora que fue mi Carrier Manager por mi paso por Avanade España, una gran profesional y mejor persona «Me prometió que un día contaremos con su presencia en Tarragona, ya no me puedes fallar ;-)».


También estuvieron presentes en la cena otros megacracks como Vicenç Masanas DNN Core-Localization Team LeaderShip, que esta organizando un nuevo grupo en Gerona y como no Pep Lluis Microsoft MVP y fundador del primer grupo de España.


Con gente como esta tenemos asegurada la buena marcha de los grupos en Cataluña.


Espero que la relación entre los grupos siga por este productivo camino.

Material Presentación WPF

Para los que no pudisteis estar presentes en la charla que nos dio Toni Recio sobre WPF y para los que estuvistes pero os gusto tanto que la queréis volverla a ver, ya tenéis disponible la presentación para descargar como WebCast.


 http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=es-ES&EventID=1032369493&CountryCode=ES


   


Más fotos…


El material de la charla también está disponible:



La presentación de la charla sobre la Evolución de .NET y el CLR también está disponible.



Espero que podáis disfrutar de todo este material y veros en los siguientes eventos.


Cross-Posting desde www.lonetcamp.com


 

Iframe Cross Domain Cookie

Siguiendo con el infierno de los Iframes, hoy intentaremos utilizar el control Login de ASP.NET desde la página de un cliente que utiliza nuestra aplicación embebida.


 Lo primero que podemos pensar, es en que medida nos puede llegar a afectar trabajar con un iframe con el sistema de login que utilizamos con ASP.NET, para eso tenemos que diferenciar los dos pasos esenciales en la seguridad de nuestras aplicaciones.


Autenticación


La autenticación es el proceso mediante el cual se obtienen credenciales de identificación tales como el nombre de usuario y la contraseña, al tiempo que se validan dichas credenciales ante alguna autoridad.

ASP.NET proporciona cuatro proveedores de autenticación:
















Autenticación de formularios
Autenticación de Windows
Autenticación Passport
Autenticación predeterminada


Autorización


La autorización es el proceso que verifica si el usuario autenticado tiene acceso a los recursos solicitados.

ASP.NET proporciona los siguientes proveedores de autorización:








FileAuthorization
UrlAuthorization


Más información en http://support.microsoft.com/kb/306590/es#3


Con esta definición podemos entender que nuestro control login lo que pretende hacer es Autentificar el usuario en nuestra aplicación para poder identificarlo y para eso utilizaremos la Autentificación de Formularios.


Autenticación de Formularios


La autenticación de formularios hace referencia a un sistema en el que la solicitudes no autenticadas se redirigen a un formulario de Lenguaje de marcado de hipertexto (HTML) en el que los usuarios escriben sus credenciales. Una vez que el usuario proporciona las credenciales y envía el formulario, la aplicación autentica la solicitud y el sistema emite un vale de autorización en el formulario de una cookie. Esta cookie contiene las credenciales o una clave para readquirir la identidad. Las solicitudes subsiguientes del explorador automáticamente incluyen la cookie.


Ahora que ya conocemos el mecanismo de autentificación y la manera que tiene para persistir esta información podemos suponer cual será el problema, nuestra aplicación al autentificar al usuario e intentar persistir sus credenciales se encuentra que el dominio que intenta guardar la cookie no es el mismo que esta corriendo la página web, ups ( problema de seguridad – Cross Domain Cookie ).


Miremos como funcionaría la aplicación si no utilizara un Iframe.




  1. La aplicación nos redirige al formulario de Autentificación.
  2. Introducimos nuestros datos para identificarnos.
  3. Si los datos de usuario son correctos nos redirige a la página principal mostrándonos el nombre de usuario

Que pasa cuando hacemos lo mismo desde un iFrame:




  1. La aplicación nos redirige al formulario de Autentificación.
  2. Introducimos nuestros datos para identificarnos.
  3. Como la identificación del usuario ha sido correcto nos redirige a la página principal pero no nos muestra la información del usuario, porque no ha podido guardar la cookie con sus datos.

Para solucionar este problema nos viene a rescatar P3P  «un lenguaje estándar que ofrece a los usuarios una forma sencilla y automatizada de controlar en mayor medida el uso que se hace de su información personal en los sitios Web que visitan».


Tenemos dos opciones a la hora de utilizar p3p para poder guardar la cookie de usuario con éxito.




  1. Crear una cabecera en nuestro directorio virtual para nuestra aplicación.


  2. Crear la cabecera en el formulario de Login para que solo afecte a esa página.

Nosotros utilizaremos la segunda opción.


    protected void Page_Load(object sender, EventArgs e)


    {


        HttpContext.Current.Response.AddHeader(«p3p», «CP=»CAO PSA OUR»»);


    }



Ya le podemos decir a nuestro cliente que podemos controlar a los usuarios registrados en nuestra aplicación embebida en su sistema. 😉


Cross-Posting desde www.lonetcamp.com


 

Iframe Access Denied Cross Domain

Iframe + AjaxControlToolkit v1 + IE = Access Denied Cross Domain  


Siempre oí hablar del infierno de las DLL pero cuando hablamos de desarrollos web no nos podemos olvidar del infierno de los iFrames.


Cabe decir que este problema lo han solucionado en la nueva versión de AjaxControlToolkit v3 pero para los que tenemos algún proyecto con la versión  anterior tenemos una solución para este problema de permisos.


Primero mostraremos gráficamente cual es el problema.



Hemos creado un simple TexBox con un CalendarExtender para seleccionar una fecha del calendario y esta página de ejemplo la llamamos desde un Iframe que se encuentra en otro dominio, como si la llamada fuera desde un cliente ;-).


Un claro ejemplo de un error de acceso de Cross-Domain.


En el Blog de Bertrand Le Roy’s nos da una solución para poder solucionar este problema que lo provoca Sys.UI.getLocation al intentar acceder a una  propiedad de la página.


        <asp:ScriptManager ID=»ScriptManager1″ runat=»server»>       


        </asp:ScriptManager>


        <script type= «text/javascript»>


            if (Sys.Browser.agent == Sys.Browser.InternetExplorer){


                Sys.UI.DomElement.getLocation=function(a){


                if(a.self||a.nodeType===9)


                    return new Sys.UI.Point(0,0);


                var b=a.getBoundingClientRect();


                if(!b)


                    return new Sys.UI.Point(0,0);


                var c=a.document.documentElement,d=b.left-2+c.scrollLeft,e=b.top-2+c.scrollTop;


                try{


                    var g=a.ownerDocument.parentWindow.frameElement||null;


                    if(g){


                        var f=2-(g.frameBorder||1)*2;


                    d+=f;e+=f


                    }


               }catch(h){}


               return new Sys.UI.Point(d,e)};


        }


Lo único que tenemos que hacer es sobreescribir Sys.UI.DomElement.getLocation cuando el exploración sea InternetExplorer y evitaremos el tan temido error.



Con esta pequeña modificación ya podemos utilizar nuestro ejemplo dentro de un Iframe desde otro dominio.


Cross-Posting de www.lonetcamp.com


 

Pasamos por el TTT !!!

Nos hemos reunido nuevamente en el TTT de Microsoft en las oficinas de Madrid, en esta nueva cita nos han puesto al día de los nuevos lanzamientos y sobre todo nos ha servido para mantener el contacto con los otros grupos de usuarios y poder compartir nuestras experiencias.


Para muestra os dejo unas fotos de como ha ido la cita.


Avisamos que algunas de estas imágenes pueden dañar la sensibilidad de algunas personas 😉



 


Más fotos en …


Saludos.


CrossPosting de www.LoNetCamp.com


 

WPF Evento 28 Febrero LoNetCamp


 


El Jueves 28 de Febrero del 2008
 
WPF se incluye en la versión 3.0 de Microsoft .NET Framework y permite crear interfaces que incorporan documentos, componentes multimedia, gráficos bidimensionales y tridimensionales, animaciones, características tipo web en nuestras aplicaciones Windows.
 
Toni Recio nos sumergirá en el extraordinario mundo de la programación de aplicaciones con esta innovadora tecnología.


 


Registro Presencial.


http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032369469&Culture=es-ES


 


Registro WebCast.
 
En esta ocasión vamos ha retransmitir el evento por Internet, todo aquel que no se pueda acercar a Tarragona va ha tener la oportunidad de seguir el evento en vivo gracias a Live Meeting.


http://msevents.microsoft.com/cui/eventdetail.aspx?EventID=1032369492&Culture=es-ES


Ahora no hay excusa esperamos veros a todos…