c# - .NET Core 3.1 Identity 在 Azure 上登录需要很长时间

标签 c# sql-server azure asp.net-core asp.net-identity

我们构建了一个 .NET Core 3.1 MVC Web 应用程序。我们决定使用 MS Identity Microsoft.AspNetCore.Identity 和 Microsoft.AspNetCore.Identity.UI。我们搭建了所有登录/用户管理的东西。它在\Areas\Identity\Pages\Account 中创建了 Razor 页面。

我们需要一个不与电子邮件地址绑定(bind)的用户名。我们还需要扩展 IdentityUser 并添加诸如 FirstName 等内容。

\Areas\Identity\Pages\Account\Login.cshtml.cs 中的这行代码给我们带来了 hell 。在本地机器上,使用本地数据库,它运行得很好。当我们推送到 Azure 时,执行此行需要 30 秒。

var result = await _signInManager.PasswordSignInAsync(Input.UserName, Input.Password, Input.RememberMe, lockoutOnFailure: false);

事实上,任何使用 _signInManager 的操作都需要 15 - 30 秒。即使是像注销这样简单的事情。

private readonly SignInManager<ApplicationUser> _signInManager;

ApplicationUser继承自IdentityUser

public class ApplicationUser : IdentityUser
{
    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string UserType { get; set; }

    public int OrganizationID { get; set; }

    public DateTime? CreatedOn { get; set; }

    public string NPINumber { get; set; }
}

我们认为这可能是因为我们在 Azure 上使用了低端托管层,因此我们将所有内容提高了几个档次,投入了更多资金,但仍然遇到问题。

这确实引起了一个问题。我愿意接受任何纠正这个问题的想法。

最佳答案

结果有人给了我一个想法,帮助我找到导致速度变慢的线索。

应用程序见解。我在 Azure 上打开它...登录、注销...深入了解所发生的事情,并看到对 (localdb)\mssqllocaldb 的引用,它绝对不应该出现在生产服务器上。

这让我相信 NLog 配置错误。事实证明,NLog 设置为记录到 .log 文件,但也将记录添加到数据库中的表中。

在本地开发计算机上,它将正确记录到本地数据库。但在 Azure 上,它还会尝试登录到 Server=(localdb)\mssqllocaldb;它当然无法达到。花了30秒左右才超时。

删除那些将 NLog 发布到 (localdb)\mssqllocaldb 的引用;修复了减速问题。现在登录和注销非常快捷。

这并不是表面上看起来的 Microsoft 身份解决方案。相反,是日志记录和错误配置的 NLog 导致了该问题。

我想我需要仔细研究一下 Application Insights。我的印象是这只是一些垃圾邮件,用于数据挖掘我的用户行为。我想我错了。

这里的教训是,它看起来就像是微软的身份解决方案,但实际上每次使用身份时都会发生日志记录的困惑。

关于c# - .NET Core 3.1 Identity 在 Azure 上登录需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62628937/

相关文章:

c# - 外部组件引发的异常

python - 值错误: "hostingstart.app" could not be imported

azure - azurerm_mariadb_virtual_network_rule 获取 "Error waiting for Virtual Network Rule "“要创建或更新(服务器,rg)...”

sql - 如何检查 View 是否存在,如果不存在则创建

c# - 哪种 SQL Server 字段类型最适合存储价格值?

javascript - Microsoft QnA Maker API 错误未找到资源

c# - 如何从 SMO 解析这个类似路径的字符串?

c# - 无符号互锁读取

c# - 异常加载 CEFSHARP.CORE.DLL

sql-server - 在矩形(多边形)内查找sql​​地理点