Asp.net mvc Can';t登录到我自己的登录页面

Asp.net mvc Can';t登录到我自己的登录页面,asp.net-mvc,authentication,Asp.net Mvc,Authentication,我已经创建了自己的登录页面,但当我试图通过单击提交按钮登录时,它会直接跳转到“catch”,返回View(),而不是重定向到Admin。通过谷歌搜索,我似乎找不到任何关于它的信息。我还尝试删除try和catch,得到了这个异常:“invalidoPractionException未被用户代码破坏”序列不包含任何元素 以下是我的登录方法: public class LoginController : Controller { public static byte[] lag

我已经创建了自己的登录页面,但当我试图通过单击提交按钮登录时,它会直接跳转到“catch”,返回View(),而不是重定向到Admin。通过谷歌搜索,我似乎找不到任何关于它的信息。我还尝试删除try和catch,得到了这个异常:“invalidoPractionException未被用户代码破坏”序列不包含任何元素

以下是我的登录方法:

public class LoginController : Controller
{
            public static byte[] lagHash(string innString)
    {
        var algoritm = System.Security.Cryptography.MD5.Create();
        byte[] data, utdata;
        data = System.Text.Encoding.ASCII.GetBytes(innString);
        utdata = algoritm.ComputeHash(data);
        return utdata;
    }

public ActionResult Login()
    {

        return View();
    }
    [HttpPost]
    public ActionResult Login(FormCollection innAdmin)
    {
        string Username = innAdmin["Username"];

        try
        {
            byte[] passwordArray;
            passwordArray = createHash(innAdmin["Password"]);

            var db = new Models.DataClass1DataContext();
            var Admin = (from s in db.Admins
                         where s.Username == Username &&
                         s.Password == passwordArray
                         select s).Single();
            if (Admin.Username == innAdmin["Username"])
            {
                return RedirectToAction("Admin", "Admin");
            }
            else
            {
                return View();
            }
        }
        catch (Exception wrong)
        {
            return View();
        }
    }
以下是aspx文件的代码:

<table>
    <tr>
        <td>Username :</td>
        <td>
            <input type = "text" name="Username" />
        </td>
    </tr>
    <tr>
        <td>Password :</td>
        <td>
            <input type = "password" name="Password" />
        </td>
    </tr>
    <tr>
        <td>
            <input type = "submit" value="Log In" />
        </td>
    </tr>

用户名:
密码:

在此处输入代码
似乎需要将字节数组转换为字符串。使用正确的编码并转换为字符串

public static string ByteArrayToString(byte[] bytes, EncodingType encodingType) 
{ 
    System.Text.Encoding encoding=null; 
    switch (encodingType) 
    { 
        case EncodingType.ASCII: 
            encoding=new System.Text.ASCIIEncoding(); 
            break;    
        case EncodingType.Unicode: 
            encoding=new System.Text.UnicodeEncoding(); 
            break;    
        case EncodingType.UTF7: 
            encoding=new System.Text.UTF7Encoding(); 
            break;    
        case EncodingType.UTF8: 
            encoding=new System.Text.UTF8Encoding(); 
            break;    
    } 
    return encoding.GetString(bytes); 
} 
*编辑* 请尝试以下操作:

var admin = (from s in db.Admins where s.Username == Username && s.Password == passwordArray select s).SingleOrDefault();
if (admin != null)
{
return RedirectToAction("Admin", "Admin");
}
else
{
return View();
}     
*编辑2* 这意味着你的验证失败了。 试试这个:

var test = (from s in db.Admins where s.Username == Username select s).SingleOrDefault();
if (test != null)
{
   var test2 = test.Password;
}
放置断点并检查测试对象。它不应该为空。 查看检索到的密码,并将其与正在使用的哈希密码进行比较。 你现在快到了

**编辑3**
那就意味着问题出在你的数据存储上。您用于登录的用户名不存在,因此登录永远不会成功

你说的“它什么都不会做”是什么意思?它是否没有输入您上面显示的方法?抛出异常?请提供更多细节…嗨!谢谢你的回答。“是”未输入该方法,它会直接跳到返回视图的位置。@SLaks抱歉,我已经创建了哈希文件,看起来哈希不是问题所在。您会遇到什么异常?出于安全原因,您应该对哈希进行加密。(这不会解决您的问题)我尝试了以下代码,但也没有成功。当我按下提交按钮时,它只是返回视图();嗯,真奇怪!我已经仔细检查了我的用户名和密码+几乎创建了一个新的,只是想看看我是否使用了错误的密码或用户名,但似乎两者都不是问题:S Man。。这太令人沮丧了!您是否可以手动连接到成员资格提供商并再次检查?(从VS菜单项目->ASP.NET配置)确保正确配置了实体框架。可能您同时指向的是另一个数据库。我在测试提供程序时收到一条消息:无法建立到数据库的连接。如果尚未创建SQL Server数据库,请退出网站管理工具,使用aspnet_regsql命令行实用程序创建和配置数据库,然后返回此工具以设置提供程序。你有什么想法吗?