' MultipleActiveResultsSets'关键字不受支持

时间:2017-02-15 11:33:05

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

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

我已将连接字符串存储在Web.Config中,并在我的Code-Behind中引用它。

但是,当我尝试在本地运行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>

我删除了#34; MultipleActiveResultsSets = False&#34;从Connection String中查看错误是否已停止,而是现在显示错误&#34; Encrypt&#34;。

因此,错误出现在连接字符串的密码部分之后的下一个项目中。 密码会与问题有关吗?

此外,所需的用户名和密码是Azure门户网站中显示的服务器管理员登录详细信息吗?

以下是Code-Behind:

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();
}

3 个答案:

答案 0 :(得分:4)

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

enter image description here

答案 1 :(得分:0)

MultipleActiveRe sultSets的默认值为False。

如果您不需要该功能,请离开(删除) &#39; MultipleActiveRe sultSets = False&#39;连接字符串。

因为默认值为false。如果你想要假,你不需要意图写它。

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

然而,为什么&#39; MultipleActiveRe sultSets = False&#39;被认为是错误的语法仍然是个问题。

更新 -

这就是为什么我很好奇为什么这是错的。我认为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)没有提供者

&#39;固定&#39;是Azure自动提供安全连接的新功能,您可以在互联网上找到相关内容。

检查服务器的防火墙,然后尝试使用以上几点进行拍摄。

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

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

进入Server Management Studio时,在弹出窗口中进行连接, 有服务器名称&#39;。输入&#39; greentree.database.windows.net&#39;在那里,尝试使用您的管理员凭据登录。

或者,您是否可以在Web.Config中使用connectionString连接到Azure服务器,但是使用普通代码?

如果可能的话,请使用例外的屏幕截图更新,而不仅仅是文本。

最后,我确定你非常清楚,为了安全起见,我们需要稍后加密connectionString。

答案 2 :(得分:0)

您错误输入&#34; MultipleActiveResultsSets&#34;。 &#34;结果&#34;在它不是复数。

正确方式:&#34; MultipleActiveResultSets&#34;。