28

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

我们的应用程序是一个带有 ADO .NET Entity Framework 的 ASP.NET MVC 3 项目。

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

从我们的应用程序执行数据库查询时,我们得到以下异常:“已经有一个打开的 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 数据库,没有任何例外。但是,当使用相同的连接字符串在云上部署相同的应用程序时,会出现上述错误。

你能帮我们解决同样的问题吗?

4

6 回答 6

47

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

于 2012-12-03T04:24:10.320 回答
13

或者,您可以在使用 Visual Studio 中的发布功能时将“MultipleActiveResultSets=true”添加到连接字符串并更新目标 web.config。确保选择“在运行时使用此连接字符串(更新目标 web.config)”。在此处输入图像描述

于 2014-06-13T04:05:48.300 回答
3

您必须在连接字符串中设置 multipleresultsets=true 并重新启动。

删除的答案

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

我想它已经打开了。

我找不到确切的来源,但 Faisal Mohamood(项目经理,实体框架)在 2010 年表示:“不用说,我们将确保在我们获得基于 SQL Azure 的应用程序时自动打开 MARS围绕发布产品的下一个更新。” 在这里找到它:http: //blogs.msdn.com/b/adonet/archive/2010/06/09/remember-to-re-enable-mars-in-your-sql-azure-based-ef-apps。 aspx

于 2012-10-29T19:05:21.863 回答
3

我们在新的 Azure 门户上也遇到了这个问题。MARS 适用于所有本地开发环境,但在 Azure 上抛出了同样令人讨厌的异常。我们验证了部署到 Azure 的物理 web.config 文件中的连接字符串包含MultipleActiveResultSets=true;,但应用程序似乎没有接受它。最终起作用的是应用服务实例 > 设置 > 数据连接,并删除与 web.config 中所讨论的同名的数据连接。我的猜测是 Azure 存储的那个胜过部署的 web.config 中的那个。

于 2016-04-27T04:44:25.103 回答
0

尝试在代码中分配 MultipleActiveResultSets。是没读还是没用?

SqlConnectionStringBuilder.MultipleActiveResultSets

于 2012-10-02T14:52:43.603 回答
0

我有同样的问题,但我解决了来自发布助手的连接字符串中的 MultipleActiveResultSets=True,作为 irium

于 2014-03-14T00:11:17.593 回答