lunes, 28 de marzo de 2011

Publicando Sql Server CE 4.0 en un hosting compartido

En un post anterior introducimos SQL Server CE 4.0 y su nueva y excitante característica de soportar entornos de hosting compartidos con ASP.NET.

En este anterior post, todas las pruebas ocurrían en un entorno local correctamente configurado y donde había pocas posibilidades de encontrar problemas durante el despliegue de nuestra primera aplicación ASP.NET con SQL Server CE.4.0. De hecho, la referencia al ensamblado System.Data.SqlServerCe era desde el GAC, pero claro, en un hosting no puedo esperar que esté instalado SqlServerCe así que tiene que haber alguna forma de solucionarlo.

Siendo así, ha llegado el momento de probar su valía e intentar desplegar un “Hola Mundo” en un entorno de hosting compartido donde (y como es costumbre) no seremos bienvenidos los desarrolladores de ASP.NET.

La aplicación de prueba simplemente contendrá una base de datos con una sola tabla y unos pocos registros y una página por defecto donde mostraremos estos registros en un GridView… suficiente para ilustrar que… Sí, amigos! Hay vida para Sql Server CE 4.0 en un hosting compartido!

Los pasos a seguir son:

1.       Quitar la referencia a System.SqlServer.Ce de GAC.

2.       Copiar en el directorio \bin todo el contenido de la carpeta C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private.

Ahora podremos comprobar que en local todo vuelve a funcionar correctamente y que los ensamblados necesarios para ejecutar SQL Server CE ya no están tirando del GAC sino de la copia privada que tenemos en el directorio \bin (por cierto, si el proyecto no es .NET Framework 4.0 tendrás que quitar el ensamblado System.Data.SqlServerCe.Entity.dll, con lo que intuyo que si quieres utilizar EF con SQL Server CE 4.0 tu proyecto tiene que ser obligatoriamente .NET Framework 4.0, pero bueno, ese no es mi caso…).

clip_image002

Solucionado este primer error y algo expectantes por el resultado, hacemos la primera subida a nuestro hosting y observamos lo resultados…

El primer error que me encuentro es el siguiente:

clip_image004

Por intuición y viendo en la pila de llamadas un nombre de método LoadNativesBinaries intuyo que el nivel de acceso a la carpeta \bin no es el adecuado, así que concedo el permiso “Modificación” a la cuenta apropiada del worker process de ASP.NET. La verdad es que esto no sé si es porque algo hago mal o porque es así, pero tampoco me importa en exceso, la verdad.

Después de haber modificado los permisos de la carpeta \bin, ahora obtengo este otro error:

clip_image006

Este error es bastante más descriptivo y está claro que hay problemas accediendo al fichero EJEMPLO.sdf (esto es la base de datos Sql Server Ce), así que ahora concedo el permiso “Escribir” a la carpeta App_Code para la identidad del usuario de ASP.NET, y felizmente ahora sí puedo ver mi página con acceso a Sql Server Ce, ejecutándose con éxito en un entorno de hosting compartido.

clip_image007

Si además estás utilizando EF, te dejo estos enlaces porque es necesario realizar algunos cambios en el web.config.

http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/3822a7ca-c9a0-4c51-92b8-64d4b7d2dd43/

http://stackoverflow.com/questions/3223359/cant-get-sql-server-compact-3-5-4-to-work-with-asp-net-mvc-2

Y para terminar, si estás utilizando System.Data.Common tendrás que hacer ciertos cambios en tu fichero web.config. Puedes visitar este otro post donde lo explico.

Un saludo!.

No hay comentarios:

Publicar un comentario