【问题标题】:Entity Framework .Net core FindAsync Throw System.OverflowException: Arithmetic operation resulted in an overflowEntity Framework .Net core FindAsync Throw System.OverflowException:算术运算导致溢出
【发布时间】:2017-06-06 09:22:34
【问题描述】:

我正在尝试创建一个用于返回令牌的身份验证的 Web API。 我在 Windows 10 上使用 .Net core 1.1、EF 1.1.0 和 SQL 2014 express。我按照this 网站的指示创建所需的类。

在中间件类中,有一个名为GetIdentity的函数来检查数据库中的用户名和密码。这是代码

private async Task<ClaimsIdentity> GetIdentity(string username, string password, MyDBContext db) {
        try
        {
            m_user SignedUser = await db.Users.FindAsync(username);
            if (SignedUser == null || !SignedUser.password.Equals(password, StringComparison.Ordinal))
                throw new ArgumentException("Invalid username or password");

            return await Task.FromResult<ClaimsIdentity>(
                new ClaimsIdentity(
                    new GenericIdentity(username, "Token"),
                    new Claim[] { }
                ));
        }
        catch (Exception ex) {Console.WriteLine(ex.Message); return await Task.FromResult<ClaimsIdentity>(null); }
    }

然后程序命中时

m_user SignedUser = await db.Users.FindAsync(username);

它抛出System.OverflowException:算术运算导致溢出。

我没有找到解决方案,或者至少找不到失败的原因。

有人知道我为什么会遇到这个异常吗?

谢谢你帮助我。

PS:如果您需要更多信息,请告诉我

【问题讨论】:

    标签: .net-core entity-framework-core asp.net-core-webapi


    【解决方案1】:

    我修好了。我使用了错误的连接字符串。我必须将 SQL 数据库的端口号放在连接字符串中。

    错误的:

    Server=serverAddress;Database=dbName;User Id=dbUser;Password=dbPassword;
    

    正确的:

    Server=serverAddres,portNumber;Database=dbName;User Id=dbUser;Password=dbPassword;
    

    默认 MSSQL 端口号为 1433。

    如果你和我有同样的问题,希望它可以帮助你。

    P.S 您可能会遇到不同的异常。当我尝试在 VS Code 上运行它时遇到了这个异常

    喜欢这个:

    Microsoft.EntityFrameworkCore.Query.Internal.SqlServerQueryCompilationContextFactory[1] 迭代查询结果时数据库发生异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 2011-05-15
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多