我试图通过在Visual Studio 2013中创建的ASP.NET WebForms网站从托管在MS Azure上的SQL Server数据库中读取。
我已将连接字符串存储在Web.config中,并在代码隐藏中引用了它。
但是,当我尝试在本地运行Default.aspx时,显示this错误。
下面是我的Web配置:
<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();
}
5条答案
按热度按时间92dk7w1h1#
“MultipleActiveResultsSets”键入错误。其中的“结果”不是复数。
正确方法:“多个活动结果集”。
pinkon5k2#
发现此问题的其他人请注意:如果你忘记在Azure配置中为连接字符串选择正确的类型(数据提供程序),也会发生这种情况。我在选择
MySQL
而不是SQLAzure
时发生了这种情况。由于关键字不在该提供程序上,因此会导致错误。zsohkypk3#
多个活动结果集的默认值为False。
如果你不需要这个函数,只需从connectionstring中取出(删除)'MultipleActiveResultSets =False '即可。
因为默认值是false,如果你想要false,你不需要特意写它。
当我们在第一个SQL连接的SqlDataReader的while循环中打开第二个SQL连接时,我们需要MultipleActiveResultSets函数。
然而,为什么' MultipleActiveRe' sultSets=False '被识别为错误的语法仍然是个问题。
最新消息-
这就是为什么我很好奇为什么它是错误的。我认为MultipleActiveResultSets和Encrypt的语法没有问题。
下面是Web.Config中的连接字符串:
与你的不同之处在于,
1)tcp 2)安全3)@greentree(服务器名greentree连同ID,如(greenusers@greentree)4),没有提供程序
“安全”是Azure自动提供安全连接的新功能,您可以在Internet上找到此功能。
检查服务器的防火墙,只是尝试给予以上几点一杆.
使用管理员ID是正确的,但在安全方面,您需要为角色和权限有限的外部用户创建额外的登录名和用户。
是否可以通过Azure门户?Visual Studio?服务器管理工作室连接到Azure服务器(数据库)?
当您进入Server Management Studio时,在弹出的连接窗口中,有“服务器名称”。在那里输入“greentree.database.windows.net”,然后尝试使用您的管理员凭据登录。
或者,是否可以在Web.Config中不使用connectionString而使用纯代码连接到Azure Server?
如果可能的话,请更新例外的屏幕截图,而不仅仅是文本。
最后,我相信你很清楚,为了安全起见,我们需要加密connectionString。
b5lpy0ml4#
我也遇到了这个问题。对我来说,我创建的密码包含分号,密码泄漏到连接字符串的下一部分。
我去掉了密码中的分号,它起作用了。
例如密码的结尾是“j;.&6"。我得到的错误是
不支持“- $exception {“关键字:'**.&6;**多个活动结果集'."}系统参数异常”
jaxagkaj5#
在我的情况下,我删除
MultipleActiveResultSets=True
来自web.config中的连接字符串
而且它的工作很好。