ASP.NET 4:比较对象和字符串的结果集

时间:2011-05-11 20:50:31

标签: asp.net

我正在使用一个对象检索数据库的内容(它只返回一个字段),然后将它与一个用SHA1进行过哈希处理的字符串进行比较。代码如下:

protected void Onbutton_click_login(object sender, System.EventArgs e)
    {
        var dbcontext = new PrepLicensingSolution2010.DAL.LicensingEntities1();
        var user = dbcontext.getloginname(loginName.Text);
        string HashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(Password.Text, "sha1");

        if (user.ToString() == HashedPassword)
        {
            Response.Redirect("faqs.aspx");

        }

        else
        {

            Response.Redirect("Default.aspx");
        }

    }

我在流程的每个阶段放置断点并检查数据,对象结果集和字符串中的数据是相同的,但即使这样,条件如果失败 Breakpoint information

有趣的是,被比较的类型都是字符串类型和相同值,所以为什么重定向会转到default.aspx页面。

图像包含断点的数据

任何输入都会很棒。

由于

1 个答案:

答案 0 :(得分:2)

根据屏幕截图,user.ToString()看起来要返回字符串{System.Data.Objects.ObjectResult<string>}。当然,这与散列密码不相等。

您的问题是getloginname调用的结果是包含单个字符串的字符串序列,而不是单个字符串本身。 ToString()的默认实现只返回类名,您可以在屏幕截图中“user”行的Value列中看到它。将条件语句更改为以下语句应该解决它:

if (user.FirstOrDefault() == HashedPassword)