SQL Azure +出现错误'已经有一个与此命令关联的开放DataReader ..',即使在设置'MultipleActiveResultSets = True'之后

时间:2012-10-02 12:41:50

标签: asp.net-mvc azure azure-sql-database

我们在云上部署的应用程序版本面临一些问题。

我们的应用程序是一个带有ADO .NET实体框架的ASP.NET MVC 3项目。

根据msdn博客,我们需要在我们正确完成的数据库连接字符串中添加参数'MultipleActiveResultSets = True'(对于带有SQL azure的Entity Framework)。

我们从应用程序执行数据库查询时遇到以下异常:''已经有一个与此命令关联的打开的DataReader,必须先关闭它。“, 我猜这与'MultipleActiveResultSets = True'属性非常相关。

使用我们本地部署的数据库以及使用SQL azure数据库(在本地环境中),应用程序可以在本地环境中正常工作。

但是当我们部署云应用程序时,我们会得到上述错误。似乎没有从连接字符串中读取“MultipleActiveResultSets = True”属性。

我使用的连接字符串如下:

    <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>

我可以使用本地部署的应用程序中的上述连接字符串连接到SQL Azure数据库,没有任何例外。但是,当使用相同的连接字符串在云上部署时,相同的应用程序会给我上述错误。

你能帮我们修理一下吗?

6 个答案:

答案 0 :(得分:42)

我刚刚遇到同样的问题。我已经尝试在Web.config连接中设置“MultipleActiveResultSets = True” - 没有结果。 最后,我通过直接在Azure Dashboard上为网站手动编辑连接字符串解决了问题 - 在“配置”选项卡中有“连接字符串”设置,您应该手动添加“MultipleActiveResultSets = True;”串。 在这之后我终于让MARS工作了。

答案 1 :(得分:11)

或者,您可以在连接字符串中添加“MultipleActiveResultSets = true”,并在Visual Studio中使用“发布”功能时更新目标web.config。确保选择“在运行时使用此连接字符串(更新目标web.config)。”enter image description here

答案 2 :(得分:3)

您必须在connectionsstring中设置multipleresultsets = true并重新启动。

删除了答案

  

编辑:这是有争议的!检查下方的评论......我没有时间   调查...

     

我认为它已经开启了。

     

我无法找到现场消息,但Faisal Mohamood(项目经理,   实体框架)在2010年陈述以下内容:&#34;毋庸置疑,   我们将确保为SQL Azure自动打开MARS   当我们开始发布下一个更新时,基于应用程序   。产品#&34;在这里找到它:   http://blogs.msdn.com/b/adonet/archive/2010/06/09/remember-to-re-enable-mars-in-your-sql-azure-based-ef-apps.aspx

答案 3 :(得分:1)

我们在新的Azure门户网站上也遇到了这个问题。 MARS在所有本地开发环境中工作,但在Azure上引发了同样令人讨厌的异常。我们验证了部署到Azure的物理web.config文件中的连接字符串包含MultipleActiveResultSets=true;,但它似乎没有得到应用程序的尊重。最终有效的是应用服务实例&gt;设置&gt;数据连接,并删除与web.config中相关名称相同的数据连接。我的猜测是Azure商店胜过部署的web.config中的那个。

答案 4 :(得分:0)

尝试在代码中分配MultipleActiveResultSets。是不是读了还是不起作用?

SqlConnectionStringBuilder.MultipleActiveResultSets

答案 5 :(得分:0)

我遇到了同样的问题,但是我在发布助手的连接字符串中解决了MultipleActiveResultSets = True,如同<\ n>