我试图通过在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();
}
答案 0 :(得分:4)
对其他人发现此问题的说明:如果您忘记在Azure配置中为连接字符串选择正确的 Type (数据提供者),也会发生这种情况。对于我来说,选择了MySQL
而不是SQLAzure
发生了。由于该关键字不在该提供程序上,因此会导致错误。
答案 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;。