在先前的异步操作完成同步asp.net身份调用中的错误之前,在此上下文上启动了第二个操作

弗洛伊德

我正进入(状态

“在先前的异步操作完成之前,第二个操作已在此上下文上启动”

使用asp.net身份2.1的MVC项目中间歇出现错误。基本上,我有一个基础控制器,每个其他控制器都派生自该基础控制器,并且该控制器具有返回ApplicationUser的属性。(asp.net身份用户的扩展类)。基本控制器具有以下功能。请注意,UserManager是从OwinContext检索的(是的,它是通过使用

CreatePerOwinContext()

方法,就像在模板中一样。

protected ApplicationUser ApplicationUser
    {
        get
        {
            var userId = User.Identity.GetUserId();
            var applicationUser = UserManager.FindById(userId);
            if (applicationUser == null)
            {
                return null;
            }
            return applicationUser;
        }
    }

protected ApplicationUserManager UserManager
    {
        get
        {
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        set
        {
            _userManager = value;
        }
    }

然后在其他控制器中,我自由调用此属性以获取对ApplicationUser的引用,示例如下

public ActionResult Index()
    {
        if (Request.IsAuthenticated)
        {
            var model = new OrganizationListViewModel(false)
            {
                OrganizationDetailViewModels = ApplicationUser.Affiliations
                   .Select(e => new OrganizationDetailViewModel(
                                e.Organization, ApplicationUser)).ToList()
            };
            return View(model);
        }
        else
        {
            return RedirectToAction("Search", "Search", new { type = "organization" });
        }
    }

这有时可行,有时会出现我提到的错误。我没有在属性或控制器方法中调用异步操作。所以我很困惑。有任何想法吗?

Trailmax

我怀疑这行:

OrganizationDetailViewModels = ApplicationUser.Affiliations
               .Select(e => new OrganizationDetailViewModel(
                            e.Organization, ApplicationUser)).ToList()

在这里,您对进行请求ApplicationUser,然后进行lazy-load Affiliations,然后对于其中的每个选择再次Affiliations进行请求ApplicationUser

ApplicationUser进行本地缓存,以避免对仅要求一个的DB发出多个请求:

private ApplicationUser _cachedUser;
protected ApplicationUser ApplicationUser
{
    get
    {
        var userId = User.Identity.GetUserId();

        if (_cachedUser == null)
        {
            var applicationUser = UserManager.FindById(userId);
            return applicationUser;
        }
        return _cachedUser;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF错误:在先前的异步操作完成之前,已在此上下文上启动了第二个操作

来自分类Dev

UOW-在先前的异步操作完成之前,第二个操作在此上下文上开始

来自分类Dev

在上一个操作完成之前,在此上下文中启动了第二个操作 ASP NET CORE

来自分类Dev

使用事件处理程序时引发异常“在上一个操作完成之前在此上下文上启动了第二个操作”

来自分类Dev

SignInManager<User> 给出“在此上下文中启动的第二个操作”

来自分类Dev

由于出现异常“无法在ASP.NET Core中以先前的方式在此上下文上启动第二项操作”,因此无法以静态方法将数据播种到ASP.NET Core中。

来自分类Dev

Blazor:在此之前的操作完成之前,在此上下文中开始了第二次操作

来自分类Dev

C# ef 第二个操作在上一个异步操作完成之前开始

来自分类Dev

如何同步异步操作?

来自分类Dev

获取启动分区以识别第二个操作系统

来自分类Dev

第二个操作系统从grub消失了

来自分类Dev

我可以使用 TypeScript 等待异步操作循环在同步函数内完成吗?

来自分类Dev

ASP.NET控制器:异步模块或处理程序在异步操作仍挂起的同时完成

来自分类Dev

了解同步和异步操作

来自分类Dev

了解同步和异步操作

来自分类Dev

未在异步并行中调用第二个sinon存根

来自分类Dev

如何在WPF中向第二个实体添加CRUD操作

来自分类Dev

md-list-item中的md-menu作为第二个操作按钮

来自分类Dev

仅当变量小于第二个变量时才在bash中执行操作

来自分类Dev

C#Winforms在单个线程上启动第二个消息循环是无效的操作。使用Form.ShowDialog代替

来自分类Dev

从一个API调用方法已完成,但在第二个API上遇到“未找到”错误

来自分类Dev

函数未按顺序执行,如何在先前完成后运行一个

来自分类Dev

为什么普利茅斯启动第二个操作系统后始终失败?

来自分类Dev

同步CasperJS操作期间的异步调用

来自分类Dev

为什么第二个 JS 异步函数调用等待第一个完成?

来自分类Dev

在第二个屏幕上停用openbox桌面上下文菜单

来自分类Dev

在第一个Jquery完成之前触发第二个Jquery json

来自分类Dev

在母版页上的LinkButton不会在ASP.NET中的第二个子页上触发

来自分类Dev

ASP.NET身份异步与同步问题

Related 相关文章

  1. 1

    EF错误:在先前的异步操作完成之前,已在此上下文上启动了第二个操作

  2. 2

    UOW-在先前的异步操作完成之前,第二个操作在此上下文上开始

  3. 3

    在上一个操作完成之前,在此上下文中启动了第二个操作 ASP NET CORE

  4. 4

    使用事件处理程序时引发异常“在上一个操作完成之前在此上下文上启动了第二个操作”

  5. 5

    SignInManager<User> 给出“在此上下文中启动的第二个操作”

  6. 6

    由于出现异常“无法在ASP.NET Core中以先前的方式在此上下文上启动第二项操作”,因此无法以静态方法将数据播种到ASP.NET Core中。

  7. 7

    Blazor:在此之前的操作完成之前,在此上下文中开始了第二次操作

  8. 8

    C# ef 第二个操作在上一个异步操作完成之前开始

  9. 9

    如何同步异步操作?

  10. 10

    获取启动分区以识别第二个操作系统

  11. 11

    第二个操作系统从grub消失了

  12. 12

    我可以使用 TypeScript 等待异步操作循环在同步函数内完成吗?

  13. 13

    ASP.NET控制器:异步模块或处理程序在异步操作仍挂起的同时完成

  14. 14

    了解同步和异步操作

  15. 15

    了解同步和异步操作

  16. 16

    未在异步并行中调用第二个sinon存根

  17. 17

    如何在WPF中向第二个实体添加CRUD操作

  18. 18

    md-list-item中的md-menu作为第二个操作按钮

  19. 19

    仅当变量小于第二个变量时才在bash中执行操作

  20. 20

    C#Winforms在单个线程上启动第二个消息循环是无效的操作。使用Form.ShowDialog代替

  21. 21

    从一个API调用方法已完成,但在第二个API上遇到“未找到”错误

  22. 22

    函数未按顺序执行,如何在先前完成后运行一个

  23. 23

    为什么普利茅斯启动第二个操作系统后始终失败?

  24. 24

    同步CasperJS操作期间的异步调用

  25. 25

    为什么第二个 JS 异步函数调用等待第一个完成?

  26. 26

    在第二个屏幕上停用openbox桌面上下文菜单

  27. 27

    在第一个Jquery完成之前触发第二个Jquery json

  28. 28

    在母版页上的LinkButton不会在ASP.NET中的第二个子页上触发

  29. 29

    ASP.NET身份异步与同步问题

热门标签

归档