【问题标题】:'MultipleActiveResultsSets' Keyword Not Supported不支持“MultipleActiveResultsSets”关键字
【发布时间】:2017-07-04 01:03:07
【问题描述】:

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

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

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

这是我的 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”以查看错误是否停止,但现在显示“加密”的错误。

因此错误出现在连接字符串的密码部分之后的下一项。 密码是否与问题有关?

此外,此用户名和密码是必需的,它们是显示在 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();
}

【问题讨论】:

标签: c# sql asp.net azure connection-string


【解决方案1】:

您输入错误“MultipleActiveResultsSets”。里面的“结果”不是复数。

正确的方式:“MultipleActiveResultSets”。

【讨论】:

    【解决方案2】:

    其他人发现此问题的注意事项:如果您忘记在 Azure 配置中为连接字符串选择正确的 Type(数据提供程序),也会发生这种情况。这发生在我选择 MySQL 而不是 SQLAzure 的情况下。由于关键字不在该提供程序上,因此会导致错误。

    【讨论】:

      【解决方案3】:

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

      如果您不需要该功能,只需退出(删除) 'MultipleActiveRe‌​‌​sultSets=False '的​​连接字符串。

      因为默认值是假的。想要false就不用刻意写了。

      当我们在第一个 SQL 连接的 SqlDataReader 的 while 循环中打开第二个 SQL 连接时,我们需要 MultipleActiveRe‌​‌​sultSets 的功能。

      但是,为什么“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(服务器名称 greentree 和 ID 像 (greenusers@greentree) 4) 没有提供者

      “安全”是 Azure 自动提供安全连接的新功能,您可以在 Internet 上找到相关信息。

      检查服务器的防火墙,然后尝试尝试以上几点。

      使用 admin ID 是正确的,但在安全方面,您需要为具有有限角色和权限的外部用户创建额外的登录和用户。

      您可以通过 Azure 门户连接到 Azure 服务器(数据库)吗?视觉工作室?服务器管理工​​作室?

      进入Server Management Studio后,在弹出的连接中, 有“服务器名称”。在此处输入“greentree.database.windows.net”并尝试使用您的管理员凭据登录。

      或者您可以在 Web.Config 中不使用 connectionString 而是使用纯代码连接到 Azure 服务器吗?

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

      最后,我相信你很清楚,为了安全起见,我们稍后需要加密连接字符串。

      【讨论】:

      • 嗨@Kay Lee,我从连接字符串中删除了MultipleActiveResultSets=False,但仍然出现相同的错误。然而,这一次是为了Encrypt。因此,由于某种原因,此错误发生在连接字符串中的密码之后。这是否提供了任何额外的信息?
      • 嗨,我现在将更新我的连接字符串,使其看起来像你上面的那样,看看它是否有效。我可以使用 SQL Server 身份验证登录在 SQL Server Management Studio 中登录我的数据库。但是当我将这些相同的登录详细信息放入我的连接字符串时,我得到了那个错误
      • 好的,使用由 Visual Stuio 或 Server Management Studio 自动生成的 connectionString。并看看类似的案例。
      • 您的密码是否包含任何可能与连接发生冲突并应被屏蔽的符号?思考;或"之类的。
      【解决方案4】:

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

      我删除了密码中的分号,它起作用了。

      例如密码的结尾是“j;.&6”。我得到的错误是

      "- $exception {"关键字不支持: '**.&6;**multipleactiveresultsets'."} System.ArgumentException"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-06
        • 2019-07-08
        • 1970-01-01
        • 1970-01-01
        • 2012-03-03
        • 1970-01-01
        • 2017-09-24
        • 1970-01-01
        相关资源
        最近更新 更多