C# “/”应用程序中出现服务器错误。指定的强制转换无效

C# “/”应用程序中出现服务器错误。指定的强制转换无效,c#,asp.net,linq,C#,Asp.net,Linq,我试图运行这段代码,但错误弹出,具体的强制转换无效。在添加任何LINQ之前,它都做得很好。请帮忙,谢谢。在添加任何LINQ之前,仍然很好。但现在它无法加载用户数据库上下文。我不知道这是怎么发生的。请发送帮助,谢谢 ForumDBDataContext db = new ForumDBDataContext(); protected void Page_Load(object sender, EventArgs e) { ValidationSettings.UnobtrusiveVali

我试图运行这段代码,但错误弹出,具体的强制转换无效。在添加任何LINQ之前,它都做得很好。请帮忙,谢谢。在添加任何LINQ之前,仍然很好。但现在它无法加载用户数据库上下文。我不知道这是怎么发生的。请发送帮助,谢谢

ForumDBDataContext db = new ForumDBDataContext();
protected void Page_Load(object sender, EventArgs e)
{
    ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
}

protected void btnLogin_Click(object sender, EventArgs e)
{
    string emailAddress = txtEmail.Text;
    string password = txtpwd.Text;
    bool rememberMe = chkRememberMe.Checked;

    User u = db.Users.SingleOrDefault(
                x => x.EmailAddress == emailAddress &&
                x.Hash == Security.GetHash(password)
                );

    if (u != null)
    {
        DateTime currentDate = DateTime.Now;
        var query = from m in db.Members
                    where m.EmailAddress == emailAddress
                    select m.Last_Login_Date;

        Convert.ToDateTime(currentDate);
        DateTime lld = Convert.ToDateTime(query);
        int diffDays = DateTime.Compare(currentDate, lld);


        if (diffDays > 72)
        {
            Response.Redirect("ChangePwd.aspx");
        }
        else
        {
            Security.LoginUser(u.Name, u.Role, rememberMe);

        }
    }
不能在LINQ中使用Security.GetHashmethod,因为此方法无法转换为SQL。在运行LINQ之前,需要运行此方法并设置变量:

string emailAddress = txtEmail.Text;
string password = txtpwd.Text;
bool rememberMe = chkRememberMe.Checked;
var hashedPassword = Security.GetHash(password);

User u = db.Users.SingleOrDefault(
            x => x.EmailAddress == emailAddress &&
            x.Hash == hashedPassword 
            );

您不能在LINQ中使用Security.GetHashmethod,因为此方法无法转换为SQL。此代码是在c中完成的,在此之前它可以运行。所以我不认为Security.GetHash是problem@HowToGame您的数据库用户是什么样子的?创建视图[dbo]。[User]作为选择[Id]、[EmailAddress]、[Name]、[Hash]、[DateJoined]、[Last\u Login\u Date]、[Member]作为[Role]从[Member]联合选择[Id]、[EmailAddress]、[Name]、[Hash]、[DateJoined]、[Last\u Login\u Date]、[Admin]作为[Role]从[Admin]创建我创建了一个视图来合并member和Admin您会遇到什么错误?用户的哈希属性类型是什么?哈希是加密的密码。用户是联盟成员和管理员的视图。散列是char54,内部用户有Id、电子邮件地址、用户名、散列、最后加入日期、加入日期、配置文件图片我的意思是什么类型的Int或String等?必须将字符放在不同的字符和整数上,但我认为这不是问题。昨天还可以,但现在它无法处理UserDBContext。我真的不知道发生了什么