-1

为我的网站使用表单身份验证,但出现错误

if (reader1.Read())
        {
            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
               1,
               tbDomainID.Text,
               DateTime.Now,
               DateTime.Now.AddMinutes(30),
               true,
               role = reader1.GetInt64(0),// this line
               FormsAuthentication.FormsCookiePath);
            string hash = FormsAuthentication.Encrypt(ticket);
            HttpCookie cookie = new HttpCookie(
            FormsAuthentication.FormsCookieName,
            hash);
            if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
            Response.Cookies.Add(cookie);

当我将它从转换GetString(0)GetInt64(0)in 时会显示另一个错误

无法将类型“long”隐式转换为“string”

任何人都可以告诉我哪里出错或我该怎么做。

我正在从我的数据库中获取整数值。

4

1 回答 1

1

这是第二个构造函数重载的FormsAuthenticationTicket 类UserData参数。

从这里可以看出,它需要一个字符串,reader1.GetInt64(0)并将返回一个long.

解决这个问题的方法就是这样调用.ToString()

role = reader1.GetInt64(0).ToString(),// this line

虽然,我不确定我是否喜欢在将变量传递给构造函数的同时设置变量。就个人而言,我会做这样的事情:

if (reader1.Read())
{
    role = reader1.GetInt64(0).ToString();

    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
        1,
        tbDomainID.Text,
        DateTime.Now,
        DateTime.Now.AddMinutes(30),
        true,
        role,
        FormsAuthentication.FormsCookiePath);

    string hash = FormsAuthentication.Encrypt(ticket);
    HttpCookie cookie = new HttpCookie(
        FormsAuthentication.FormsCookieName,
        hash);

    if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
    Response.Cookies.Add(cookie);
于 2013-10-10T09:52:19.947 回答