【发布时间】:2013-04-19 18:04:40
【问题描述】:
我想通过使用 SQL 数据库连接检查身份验证来启动我的页面。这是我的代码,我不知道为什么它不起作用:
public partial class SiteMaster : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
// Try to open database.
try
{
SqlConnection con = new SqlConnection();
con.ConnectionString = WebConfigurationManager.ConnectionStrings["blahblah"].ConnectionString;
con.Open();
con.Close();
//successful login, do nothing.
}
catch (Exception err) //if error Opening, catch the error, and display
{
SiteMasterMsg.Text = "Could not login in using ___.";
SiteMasterMsg.Text += err.Message;
}
问题是页面刚刚死掉,并给了我默认的 IIS 错误页面,显示数据库连接登录失败。我希望它会“尝试”连接,然后在登录尝试失败时,捕获错误,并显示错误的页面。我的 Default.aspx 页面上有这个:
<asp:Label id="SiteMasterMsg" runat="server" />
我不知道出了什么问题。我是否遗漏了什么,或者是否有更好的方法来做到这一点?
提前致谢!
【问题讨论】:
-
你的连接字符串是什么? (用虚拟文本替换密码)
-
为什么会出现通用错误页面?您正在捕获所有异常。您确定错误来自此代码吗?
-
@DourHighArch 这就是我一直在检查的方式:使用正确的密码,故意使用错误的密码,这会导致登录成功或失败,以及数据库连接。
-
您可以使用调试器单步执行代码并确保这实际上是崩溃的地方吗? @usr 在这里是正确的,您显示的代码不会向您显示通用错误页面。
-
@usr,错误来自 con.Open();线里面试试。我很困惑为什么它不只是“尝试” con.Open(),并且在失败时“捕捉”错误。