实体框架.Net核心FindAsync抛出System.OverflowException:算术运算导致溢出

时间:2017-01-21 13:04:53

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

我正在尝试创建用于返回令牌的身份验证的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:算术运算导致溢出。

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

有谁知道我为什么会遇到这个例外?

感谢您帮助我。

P.S:如果您需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:0)

我修好了。我用了错误的连接字符串。我必须将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]在迭代查询结果时数据库中发生异常。