System.InvalidCastException:“无法将类型为‘System.Int32’的对象转换为类型为‘System.String’。”

问题描述 投票:0回答:1
[HttpPost]
[Route("LoginTest")]
public IActionResult Authenticate([FromBody] LoginDTO login)
{
    // Fetch user
    var user = db.Users.FirstOrDefault(u => u.Username == login.Username && u.Password == login.Password);

    if (user == null)
    {
        return Unauthorized("Invalid username or password.");
    }

    if (user.UserType == "Client")
    {
        // code throws error on this line
        var client = db.Customers.FirstOrDefault(c => c.UserId == user.UserId);

        if (client == null)
        {
            // Handle case where client is null
            return NotFound("Client data not found.");
        }

        UserCDTO cDTO = new UserCDTO
        {
            Username = user.Username,
            Address = user.Address,
            CustomerName = client.CustomerName,
            Age = client.Age,
            Gender = client.Gender,
            ContactInfo = client.ContactInfo,
        };

        return Ok(cDTO);
    }
}

此代码处理 Web 应用程序的用户身份验证。它检查提供的用户名和密码是否与数据库中的用户匹配。如果用户是客户,它将检索他们的详细信息并且(这是它停止的地方)。

否则,它会返回未经授权或未找到的消息。

c# asp.net http web
1个回答
0
投票

检查您的客户类型。您的数据库中似乎有一个 int32 列,无法转换为您的客户类型属性之一,它是一个字符串。

© www.soinside.com 2019 - 2024. All rights reserved.