登录不正确时,简单验证方法会导致错误

时间:2013-10-22 19:53:33

标签: c# linq entity-framework

我有一个简单的登录功能:

    private bool AdminIsValid(string username, string password)
    {
        bool isValid = false;
        using (var db = new AdminEntities())
        {

            var admin = db.users.FirstOrDefault(u => u.password.Trim() == password);

            if (admin != null)
            {
                if (admin.uname.Trim() == username)
                {
                    isValid = true;
                }
            }
        }
        return isValid;
    }

我这样使用:

    protected void LoginButton_Click(object sender, EventArgs e)
    {            
        if (AdminIsValid(LoginUser.UserName, LoginUser.Password))
            {
                FormsAuthentication.SetAuthCookie(LoginUser.UserName, false);
                Response.Redirect("../");
            }
            else
            {
               //"Log in data failed"
            }           
    }

它仅在登录成功时有效,当失败时我收到此错误:

  

由于失败而无法生成SQL Server的用户实例   启动用户实例的进程。连接将是   闭合。

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

2 个答案:

答案 0 :(得分:2)

您的连接字符串中有User Instance=True,请将其删除。此外,您应该将用户名和密码进行比较,因为多个用户可以拥有相同的密码,您可以修改您的方法,如:

private bool AdminIsValid(string username, string password)
{
    using (var db = new AdminEntities())
    {
       return db.users.Any(u => u.password.Trim() == password &&
                                u.uname.Trim() == username);
    }
}

答案 1 :(得分:0)

我通过用我自己的替换所有ApplicationServices连接字符串来修复此问题。

然后我运行了以下命令:

aspnet_regsql.exe -S DBServerName -U DBLogin -P DBPassword -A all -d DBName