如何解决此错误无法将类型为“System.Int32”的对象转换为类型“System.String”

本文关键字:类型 System Int32 String 转换 对象 解决 何解决 错误 | 更新日期: 2023-09-27 18:34:54

为我的网站使用表单身份验证,我在

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)时,将显示另一个错误

无法将类型"long"隐式转换为"字符串">

谁能告诉我哪里出错了,或者我该怎么办。

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

如何解决此错误无法将类型为“System.Int32”的对象转换为类型“System.String”

这是

第二个构造函数重载上的 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);
相关文章: