viernes, 04 de mayo de 2007 19:13
jonas
Problemas con la herramienta de configuracion de asp.net
Visual Studio incorpora una herramienta para la administración de sitios web que nos permite configurar aspectos relacionados con la configuración de nuestra aplicación web, proveedores para almacenes de datos y seguridad. Podemos gestionar el mantenimiento de usuarios y roles de una forma cómoda, de forma lo que hace es crear una base de datos donde se guardá toda esta información, lo que se traduce en una simplificación del trabajo a realizar.
Al intentar crear dicha base de datos esta fue la pantallita que me salió:

Tras pelearme bastante tiempo con el ordenador sin saber a que podía deberser dicho problema (el lidiar con una tecnología practicamente desconocida trae sus consecuencias...), José Manuel Alarcón Aguín me dió la siguiente respuesta (copy-paste porque quedará mejor explicado que si lo hiciese con mis palabras):
El problema que tienes con la base de datos es que, por defecto, el proveedor de SQL Server que viene con ASP.NET 2.0 parte de la base (equivocada generalmente) de que vas a usar SQL Server 2005 Express Edition. Esta base de datos tiene la particularidad de que es capaz de adjuntar dinámicamente archivos .MDB (de datos SQL Server), es decir, sin necesidad de adjuntarlos. Si te fijas en la carpeta App_Data de tu aplicación debes de tener un archivo ASP_NET.MDB que es el que se crea automáticamente para gestionar estos datos y luego adjuntarlo dinámicamente a la versión Express.
El problema es que si usas SQL Server 2005 "completo" o una versión anterior lo de adjuntar archivos de forma dinámica no funciona.
Por fortuna es algo muy sencillo de solucionar pero a mi modo de ver deberían haberlo puesto un poco más evidente.
Para ello existe una utilidad en la carpeta "C:\Windows\Microsoft .NET\Framework\v2.0.xxxx" o la análoga en tu equipo que se llama: aspnet_regsql.exe.
Ejecútala. Al hacerlo te sale un asistente que te permite crear la base de datos que necesita el proveedor en cualquier SQL Server 2000/2005. Le indicas el servidor y la BD y te crea las tablas y procedimientos que necesita.
Así creas la BD que necesitas donde tú quieras.
Esta utilidad viene con .NET, no con VS, así que no hay problema para usarla en cualquier equipo, incluso en el servidor.
Ahora sólo te resta indicar a los proveedores qué base de datos van a usar. La mejor forma de hacerlo es ir a web.config y añadir lo siguiente:
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="server=TUServidor;Integrated Security=SSPI;Database=TuBasedeDatos;"
providerName="System.Data.SqlClient" />
</connectionStrings>
De este modo eliminas la conexión por defecto de ASP.NET (que es la que apunta a la versión express) y le indicas la cadena de conexión que necesites y el proveedor que necesites.
Vamos que por lo visto SQL Server y SQL Express no se llevan muy bien... Pues realizando esto he conseguido crear la base de datos e incorporarla a la aplicación web. Para utilizar esta herramienta basta con acceder a Símbolo del sistema de Visual Studio 2005 y ejecutamos el comando aspnet_regsql. Este comando nos lanzará un asistente para crear dicha base de datos, pero si queremos saber la totalidad de opciones que permite el comando podemos añadir -?:

Seleccionamos la tarea que queremos realizar, en este caso la primera opción:
Establecemos el servidor al que nos queremos conectar y el tipo de autenticación que queremos usar, y le damos un nombre a la base de datos:
Si los datos son correctos pinchamos en siguiente y en el siguien cuadro de dialogo finalizar.
Ahora solo tenemos que cambiar en el web.config la cadena de conexión a la base de datos para que la aplicación web tenga acceso a ella y listo. Si ahora volvemos a acceder a la herramienta de configuración de asp.net veremos que podemos hacer uso de ella sin ningún problema.
