如何解决在ApiController初始化

时间:2018-05-09 10:19:23

标签: c# asp.net-web-api multi-tenant asp.net-apicontroller

所以我有一个所有控制器继承的Base控制器,它实现了ApiController,在覆盖初始化中我有这样的东西:

    protected override void Initialize(HttpControllerContext controllerContext)
    {
        var tenantId= requestUtils.GetFromHeader(controllerContext.Request);
        if (tenantId!= null)
            log4net.ThreadContext.Properties["tenantId"] = tenantId;
        else
            log4net.ThreadContext.Properties["tenantId"] = "default";
        await unitOfWork.SetTenantIdentifier(tenantIdentifier);
        base.Initialize(controllerContext);
    }

我需要为单位工作设置tenantId(因为我有多租户解决方案)并且它需要等待它(因为我需要从数据库中获取内容)但是我不能使Initialize成为异步任务所以我试图找到一种解决方法。

1 个答案:

答案 0 :(得分:1)

 //await unitOfWork.SetTenantIdentifier(tenantIdentifier);
 unitOfWork.SetTenantIdentifier(tenantIdentifier).Wait();

您应该验证Wait()上没有死锁风险。