Pregunta

¿Cómo puedo obtener dos sitios ASP.NET separados, en este caso, un sitio web que utiliza el marco de la entidad y el servicio web, para usar la misma base de datos local MDF & LDF?

Miré a mi alrededor y creo que este tipo de DB local se llama instancia de usuario, al menos la forma en que lo estoy usando actualmente. No estaba seguro de si funcionaría o no hasta que encontrara la siguiente información del Biblioteca MSDN Y ahora realmente no estoy seguro de si funcionará.

Los escenarios de instancia de usuario incluyen:

...

Hosting ASP.NET dedicado usando la autenticación de Windows. Se puede alojar una sola instancia de SQL Server Express en una intranet. La aplicación se conecta utilizando la cuenta ASPNET Windows, no utilizando suplantación. Las instancias de usuario no deben usarse para escenarios de alojamiento de terceros o compartidos donde todas las aplicaciones compartirían la misma instancia de usuario y ya no permanecerían aisladas entre sí.

¿Funcionará esto de inmediato sin ninguna configuración adicional? Cuando trato de agregar un DB a cada aplicación sucesiva, obtengo un archivo de uso en un error de uso si algo más está usando el DB, lo que me hace creer que no puedo hacerlo de esta manera. Sin embargo, si evito que se use el DB, luego agreguemos y luego comience, lo parece trabajar bien. ¿Alguien tiene algún cuidado para mí de que no se corrompa o experimentará ningún error al usarlo de esta manera?

Preferiblemente, el MDF & LDF se almacenaría en el directorio APP_DATA del sitio web (| DataDirectory |). Si lo hago de esta manera, no creo que pueda usar de manera confiable el direccionamiento relativo para el servicio a menos que lo ponga en un subdirector para el sitio, ¿es correcto?

editar: Estoy usando SQL Server Express porque esta es una tarea para la escuela, por lo que tengo que usarla. Si hay una manera sin instancia de usuario, intentaré prescindir de ella.

¿Fue útil?

Solución

No puedes usar User Instance para esto. Esto permite solo un cliente a la vez para conectarse a su base de datos. Cuando sus dos aplicaciones usan las mismas credenciales, recibe el error que describe. Cuando sus dos aplicaciones usan diferentes credenciales, esencialmente obtiene dos instancias separadas (también no lo que desea).

Además, las instancias de usuario solo son compatibles con SQL Server Express. No sé cómo se ve su entorno de producción, pero probablemente no se ejecute en SQL Server Express.

Deberías usar AttachDBFilename En la cadena de conexión de su aplicación web para apuntar a la base de datos local: AttachDBFilename=|DataDirectory|\MyDB.mdf.

En su servicio web también usa AttachDBFilename Pero depende de la ubicación de implementación del servicio web donde señalarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top