启用Unity以解决OwinContext

时间:2016-04-12 10:32:39

标签: c# asp.net unity-container

我有一个使用Microsoft Identity 2.0和Unity.Mvc进行依赖注入的ASP.NET Web应用程序。

Microsoft Identity 2.0在UserManager内注册SignInManagerOwinContext,并且依赖于HttpContext

我想在ManageController

中注入这些内容
class ManageController
{
    public ManageController(IUserManager userManager, ISignInManager signInManager)
    {
    }
}

然而,这引发了一个例外,因为它们尚未在UnityContainer中注册。

我没有在UnityContainer中找到任何方法来注册通过委托初始化的对象的类型。类似的东西

container.RegisterInstance<IUserManager>(() => HttpContext.Current.GetOwinContext().GetUserManager<UserManager>());

我还尝试从OwinContext获取实例并在UnityContainer

中注册
var userManager = HttpContext.Current.GetOwinContext().GetUserManager<UserManager>();
container.RegisterInstance<IUserManager>(userManager);

HttpContext.Currentnull

是否有自定义UnityContainer类型映射行为?

1 个答案:

答案 0 :(得分:3)

为此,您可以编写自定义#page-wrapper并在该扩展程序中添加 HTML { background: #cccccc; box-sizing: border-box; } *, *:before, *:after { box-sizing: inherit; } #bounding-wrapper { min-width: 320px; width: 100%; padding: 10px; } #content-wrapper { width: 100%; margin: 0px; padding: 0px; overflow: auto; height: auto !important; background-color: blue; } #menu-wrapper { width: 200px; background-color: orange; display: inline-block; } #page-wrapper { background-color: green; display: inline-block; }的新策略,在该策略中,您可以覆盖<div id="bounding-wrapper"> <div id="content-wrapper"> <div id="menu-wrapper"> this is in the menu wrapper </div> <!-- menu wrapper --> <div id="page-wrapper"> <p>this is in the page wrapper</p> </div> <!-- page wrapper --> </div> <!-- content wrapper --> </div> <!-- bounding wrapper -->方法并解析{{1 }}

这就是我在自己项目中的表现:

UnityContainerExtension

有关注册UnityBuildStage.TypeMapping see this link

的详细信息