我正在尝试创建用于返回令牌的身份验证的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:如果您需要更多信息,请告诉我
答案 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]在迭代查询结果时数据库中发生异常。