miércoles, 23 de julio de 2008

Guardar la session en el sqlserver

En una aplicacion .Net se puede guardar la session en un Sqlserver (AspnetsessionState). Para esto alcanza con correr un script y configurar el acceso a la base (creada por el script) en el config. Los pasos estan bien detallados aca.

Me paso en un W2003 server, que la ejecución del wizard del aspnet_regsql.exe, no me creaba la base de datos (ASPSTATE). Llamando al script directamente InstallSqlState.sql, tampoco tenia los permisos necesarios. Corriendolo por linea de comando me funciono:

aspnet_regsql.exe -S SERVER -U USER -P pssw -ssadd -sstype p

Si no se setea sstype persisted hay que darle permisos a la base de datos tempdb con el usuario que se esta accediendo

El seteo del web.config en la seccion system web hay que especificar el string de conexion de la session, esto es:
< mode="SQLServer" sqlconnectionstring="data source=SERVER INSTANCE;Integrated Security=yes;" cookieless="false" timeout="20">

Dependiendo de si se use Impersonate o no, hay que agregar el usuario DOMAIN/USER o NT AUTHORITY\NETWORK SERVICE a la base de datos

jueves, 10 de julio de 2008

Cambiar autenticacion para un objeto con IIS

La letra del problema era modificar solo la authenticacion de un objeto de mi sitio web .Net hosteado en el IIS.
Nuestro caso era evitar la authentication NTLM que estaba configurada en el dir virtual, solo para un objeto, pero esencialmente es lo mismo que el caso canónico del login bajo https y el resto de los objetos no (la otra posibilidad para resolver el login en https era tener dos dir virtuales, pero esto implica otras cosas como por ejemplo guardar la session en el sqlserver o alguna otra forma de compartir entre los dos dir virtuales).
Buscabamos la solución escribiendo una entrada en el web.config para configurar esto, pero ahi no encontramos seteos para authentication, solo algunos para la autorization, pero no evitaban que se levantara el dialogo de autenticación. Claudia nos paso un tip para resolverlo que alcanza con crear un archivo aspx en el directorio web con el nombre del assembly y desde el IIS configurar la authentication de este archivo, o sea solo creando un objeto dummy funciono.