You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET8 Blazor结合Microsoft Identity时DbContext并发操作异常求助

.NET 8 Blazor中DbContext并发操作异常问题

场景与操作步骤

  • 使用Visual Studio 2022 Preview模板创建基于.NET 8框架和Blazor的网站,已修改ApplicationUser类添加新属性:
public string? FirstName { get; set; }
public string? LastName { get; set; }
  • 在Components > Pages > Account > Manage下的Index.razor中实现用户修改上述属性的功能,保存逻辑代码如下:
if (Input.FirstName != _firstname)
{
    _user.FirstName = Input.FirstName;
    await UserManager.UpdateAsync(_user);
}
  • 在NavMenu.razor中注入UserManager<ApplicationUser>,并通过以下代码在导航栏显示用户的FirstName或用户名:
@inject UserManager<ApplicationUser> usermanager

<AuthorizeView>
    <Authorized>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="/Account/Manage">
                <span class="bi bi-person-fill" aria-hidden="true"></span> 
                @(usermanager.GetUserAsync(context.User).Result.FirstName ?? 
                  context.User.Identity?.Name)
            </NavLink>
        </div>
    </Authorized>
</AuthorizeView>

首次出现的错误

当保存FirstName的新值时,NavMenu.razor中立即抛出异常:

InvalidOperationException: 此上下文实例上已启动第二个操作,前一个操作尚未完成。通常是由于不同线程同时使用同一个DbContext实例导致的。有关如何避免DbContext线程问题的详细信息,请参阅官方文档。

注:相同代码在.NET 7 Blazor应用中可正常运行。

更新后的问题

修改NavMenu.razor,将用户信息获取逻辑移至OnInitializedAsync异步方法中:

@code {
    private string? Username;

    protected override async Task OnInitializedAsync()
    {
        var authState = await 
            AuthenticationStateProvider.GetAuthenticationStateAsync();
        var user = authState.User;

        if (user.Identity.IsAuthenticated)
        {
            var fulldetails = await usermanager.GetUserAsync(user);
            Username = fulldetails.FirstName ?? user.Identity.Name;
        }
    }
}

修改后保存更新操作可成功执行,但点击任何页面链接时仍会抛出相同的异常:

InvalidOperationException: 此上下文实例上已启动第二个操作,前一个操作尚未完成。通常是由于不同线程同时使用同一个DbContext实例导致的。有关如何避免DbContext线程问题的详细信息,请参阅官方文档。
Microsoft.EntityFrameworkCore.Infrastructure.Internal.ConcurrencyDetector.EnterCriticalSection()


内容的提问来源于stack exchange,提问作者Enrico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:57:04