2012-10-02 24 views
21

Estamos enfrentando algunos problemas con la versión implementada de nuestra aplicación en la nube.SQL Azure + Obteniendo un error 'Ya hay un DataReader abierto asociado a este Comando ...', incluso después de establecer 'MultipleActiveResultSets = True'

Nuestra aplicación es un proyecto ASP.NET MVC 3 con ADO .NET Entity Framework.

De acuerdo con los blogs msdn, tenemos que agregar el parámetro 'MultipleActiveResultSets = True' (para Entity Framework con SQL Azure) en nuestra cadena de conexión de base de datos que hemos hecho correctamente.

Obtenemos la siguiente excepción al ejecutar una consulta de base de datos desde nuestra aplicación: '' Ya hay un DataReader abierto asociado con este comando que debe cerrarse primero. " que creo que está muy relacionado con 'MultipleActiveResultSets' = True 'propiedad.

La aplicación funciona bien en el entorno local con nuestra base de datos implementada localmente, así como con la base de datos SQL azure (en el entorno local).

Pero cuando implementamos nuestra aplicación de nube obtenemos el error mencionado anteriormente. Parece que la propiedad 'MultipleActiveResultSets = True' no se lee de la cadena de conexión.

La cadena de conexión que estoy usando es el siguiente:

<connectionStrings> 
     <add name="#DBInstanceName#" connectionString="Data Source=tcp:#server#.database.windows.net,1433;Initial Catalog=#DBName#;User ID=”UserName#@#server#;Password=”#password#”;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

soy capaz de conectarse a la base de datos SQL Azure usando la cadena de conexión por encima de la aplicación implementada localmente sin ninguna excepción. Pero la misma aplicación cuando se implementa en la nube utilizando la misma cadena de conexión me da el error mencionado anteriormente.

¿Puedes ayudarnos a solucionar el problema?

+0

Puede verificar la cadena de conexión utilizando [** Azure Legacy Portal **] (https://windows.azure.com/) o [** Azure Preview Portal **] (https: //manage.windowsazure .com /) configuración de implementación? También puede [configurar el acceso remoto y conectarse a través de RDP] (http://msdn.microsoft.com/en-us/library/windowsazure/gg443832.aspx) para ver 'web.config' directamente para cada función publicada. – SliverNinja

Respuesta

3

Usted tiene que fijar multipleresultsets = true en connectionsstring y reinicie.

Eliminado respuesta

Editar: Esta es motivo de debate! Revise el comentario debajo ... No he tenido tiempo para investigar ...

Creo que ya está encendido.

no pude encontrar una aplicación local por fuente, pero Faisal Mohamood (Administrador de programas, Entity Framework) afirma lo siguiente en 2010: "No es necesario decir, nos aseguraremos de que Marte se activa automáticamente para SQL Azure aplicaciones basadas cuando nos disponemos a lanzar la próxima actualización del producto ". Encontrado aquí: http://blogs.msdn.com/b/adonet/archive/2010/06/09/remember-to-re-enable-mars-in-your-sql-azure-based-ef-apps.aspx

+0

Parece que todavía no está en su lugar ... se necesita agregar MultipleActiveResultSets = True en la cadena de conexión del sitio web de Azure, como se describe en 'irium' –

38

sólo tengo el mismo problema. He intentado configurar "MultipleActiveResultSets = True" en la conexión Web.config - sin resultados. Finalmente resolví el problema editando manualmente la cadena de conexión directamente en Azure Dashboard para el sitio web; en la pestaña "Configurar" hay configuraciones de "Cadenas de conexión" en las que debe agregar manualmente "MultipleActiveResultSets = True;" cuerda. Después de hacer eso, finalmente funcionó MARS.

+2

También es necesario reiniciar el sitio web después de editar la cadena de conexión. –

+0

Gracias por su respuesta. Estaba usando Visual Studio para administrar diferentes entornos y las cadenas de conexión eran correctas. Mi sitio web de prueba estaba usando la transformación de configuración web de Visual Studio aunque mi producción parece estar secuestrada de Azure. Me gustaría deshabilitar Azure y administrar todas las transformaciones de configuración en VS 2012. – darwindave

+1

¡Esto funciona! Aparentemente, incluso acceder al archivo web.config a través de FTP y configurar el 'MultipleActiveResultSets = True' no funciona. Este es el único método que parece cortarlo. – Ben

0

tengo el mismo problema, pero he resuelto MultipleActiveResultSets = True en la cadena de conexión de publicar asistente, como IRIUM

11

Alternativamente se puede añadir el "MultipleActiveResultSets = true" a la cadena de conexión y actualizar la web de destino. config cuando está utilizando la función Publicar en Visual Studio. Asegúrese de seleccionar "Usar esta cadena de conexión en tiempo de ejecución (actualizar destino web.config)". enter image description here

+1

¡Eso fue todo! La cadena de conexión estaba desactualizada por alguna razón ... ¡Gracias! –

+1

este es el camino a seguir, siempre uso este método y funciona sin problemas, – pomarc

1

Estamos en el nuevo portal de Azure y también tuvimos este problema. MARS trabajó en todos los entornos de desarrollo local, pero arrojó la misma desagradable excepción en Azure. Verificamos que la cadena de conexión en el archivo web.config físico implementado en Azure contenía MultipleActiveResultSets=true; pero no parecía ser respetada por la aplicación. Finalmente, lo que funcionó fue ir a la instancia del servicio de aplicaciones> configuraciones> conexiones de datos y eliminar la conexión de datos del mismo nombre que la que está en cuestión en el web.config. Mi suposición es que la que Azure almacena supera a la de la web.config desplegada.

Cuestiones relacionadas