“MultipleActiveResultsSets”关键字不受支持。

8
我正在尝试通过Visual Studio 2013创建的ASP.NET WebForms网站,从托管在MS Azure上的SQL Server数据库中读取数据。

我已经将连接字符串存储在Web.Config中,并在我的代码后台中引用它。

然而,当我尝试在本地运行Default.aspx时,会显示错误。

以下是我的Web.Config:

  <connectionStrings>
     <add name="FYPConnectionString1" 
     connectionString="Data Source=damo.database.windows.net‌​;Initial Catalog=Ballinora_db;         
     Persist Security Info=True; User ID={Username};Password={Password};" />
  </connectionStrings>

我从连接字符串中删除了"MultipleActiveResultsSets=False"以查看错误是否停止,但是相反,现在显示的是"Encrypt"的错误。
因此,在连接字符串的密码部分之后,下一个项目出现了错误。密码是否与问题有关?
此外,这些需要的用户名和密码,它们是Azure门户中出现的服务器管理员登录详细信息吗?
以下是代码后台:
private void bindRepeater()
{
    string constr = ConfigurationManager.ConnectionStrings["FYPConnectionString1"].ConnectionString;  
    //-- assuming Azure connection string stored in ConnectionString config in Web.Config as YourConnString 
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT Name FROM Users", con))
        {
            cmd.CommandType = CommandType.Text;
            con.Open();
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            repTest.DataSource = dt;
            repTest.DataBind();
            con.Close();
        }
    }
}

protected void btnDisplay_Click(object sender, EventArgs e)
{
    this.bindRepeater();
}

大家好,我也使用带有SQL数据库的Azure云服务器。我更新了我的答案。请参考问题文章右侧的'Related'。那里有一些类似的情况。这里是链接:1)https://dev59.com/_XM_5IYBdhLWcg3wXx_Z?rq = 1 2)http:// stackoverflow.com / questions / 9236554 / keyword-not-supported-name?rq = 1 - Kay Lee
  1. http://stackoverflow.com/questions/41647501/connectionstring-keyword-not-supported?rq=1
  2. http://stackoverflow.com/questions/33599853/the-connection-does-not-support-multipleactiveresultsets-despite-being-in-connec?rq=1
  3. http://stackoverflow.com/questions/41483766/databinding-keyword-not-supported-metadata?rq=1
- Kay Lee
6个回答

11
您输错了“MultipleActiveResultsSets”。其中的“Results”不应该是复数形式。
正确的写法是:“MultipleActiveResultSets”。

这对我有用。我之前使用了“Set”而不是“Sets”。 - Arpit Chinmay

4
注意:其他人可能也会遇到这个问题:如果你在Azure配置连接字符串时忘记选择正确的类型(数据提供程序),也会出现此情况。我选中了MySQL而不是SQLAzure,因为该提供者上没有该关键字,所以会导致错误。 enter image description here

0

我也遇到了这个问题。我创建的密码包含一个分号,而且密码泄漏到了连接字符串的下一部分。

我删除了密码中的分号,问题就解决了。

例如,密码的结尾是“j;.&6”。我收到的错误信息是:

"- $exception {"Keyword not supported: '**.&6;**multipleactiveresultsets'."} System.ArgumentException"


0
在我的情況下,我從web.config的connectionString中刪除了MultipleActiveRe‌​‌​sultSets=True,現在它運作正常。

0

MultipleActiveRe‌​‌​sultSets的默认值为False。

如果您不需要此功能,请从连接字符串中删除“MultipleActiveRe‌​‌​sultSets=False”。

因为默认值是false。如果您想要false,就不需要有意写出它。

我们需要MultipleActiveRe‌​‌​sultSets的功能,因为我们在第一个SQL连接的SqlDataReader的while循环内打开了第二个SQL连接。

然而,“MultipleActiveRe‌​‌​sultSets=False”为什么被认为是错误的语法仍然是个问题。

更新-

这就是我为什么好奇它为什么是错的原因。我认为MultipleActiveRe‌​‌​sultSets和Encrypt的语法没有问题。

这是我的Web.Config中的connectionString:

<connectionStrings>
     <add name="GreenLeaf"  connectionString="Server=tcp:greentree.database.secure.windows.net,1433;Database=greentea;User ID=greenusers@greentree;Password=abc123;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;MultipleActiveResultSets=True;"/>
</connectionStrings>

与您的不同之处在于:

1)tcp 2)安全 3)@greentree(Servername greentree与ID一起,如(greenusers@greentree) 4)没有提供者

'secure'是Azure自动提供的新功能,可以在互联网上找到相关信息。

检查服务器防火墙,并尝试使用以上要点。

使用管理员ID是正确的,但从安全角度考虑,您需要创建额外的登录和用户,为外部用户分配有限的角色和权限。

您能通过Azure Portal连接到Azure Server(数据库)吗?Visual Studio?Server Management Studio?

当您进入Server Management Studio时,在连接弹出窗口中,有一个“服务器名称”。在那里输入“greentree.database.windows.net”,然后尝试使用管理员凭据登录。

或者,您能否在Web.Config中不使用connectionString而使用纯代码连接到Azure Server?

如果可能,请更新异常的屏幕截图,而不仅仅是文本。

最后,我相信您非常清楚,我们需要稍后加密connectionString以确保安全。


嗨@Kay Lee,我从连接字符串中删除了MultipleActiveResultSets=False,但是同样的错误仍然出现。然而,这次是针对_Encrypt_。因此,由于连接字符串中的密码,某种原因导致了此错误。这是否提供了任何额外的信息? - user7554035
嗨,我现在将更新我的连接字符串,使其看起来像你上面的那样,以查看是否有效。我可以使用 SQL Server 身份验证登录名登录 SQL Server Management Studio 中的数据库。但是,当我将这些相同的登录详细信息放入我的连接字符串中时,我会收到该错误。 - user7554035
好的,使用Visual Studio或Server Management Studio自动生成的connectionString。并查看类似的案例。 - Kay Lee
你的密码中是否包含可能与连接冲突并应该被屏蔽的符号?比如分号;或引号"等。 - Dominik G

0
在我的情况下,有一个字符串。
multiple active result sets=True

除了正确的字符串之外,还添加了


MultipleActiveResultSets=True

这是在使用Visual Studio 2022时,在.NET 4.8项目中将服务器从生产名称更改为本地主机时发生的问题,借助更新向导Update Wizard
我通过从App.config/Web.config中移除multiple active result sets=True来解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接