實體框架.Net核心FindAsync拋出System.OverflowException:算術運算導致溢出

.net-core asp.net-core-webapi entity-framework-core

我正在嘗試創建一個用於返回令牌的身份驗證的Web API。我在Windows 10上使用.Net core 1.1,EF 1.1.0和SQL 2014 express。我按照網站的指示創建所需的類。

在中間件類中,有一個名為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:如果您需要更多信息,請告訴我

熱門答案

我修好了它。我用了錯誤的連接字符串。我必須將SQL數據庫的端口號放在連接字符串中。

錯誤的一個:

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

正確的那一個:

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

默認MSSQL端口號為1433。

如果你遇到同樣的問題,希望它可以幫到你。

PS你可能會得到不同的例外。當我嘗試在VS Code上運行它時,我遇到了這個異常

像這個:

Microsoft.EntityFrameworkCore.Query.Internal.SqlServerQueryCompilationContextFactory [1]在迭代查詢結果時數據庫中發生異常。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因