gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 05:35:58 25 4
gpt4 key购买 nike

我们构建了一个 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com