2011-03-05 151 views
3

我想在Autofac中做以下事情,但不知道如何?用Autofac注册HttpContext.User

这是你如何做到这一点在StructureMap

ForRequestedType<IPrincipal>() 
    .CacheBy(InstanceScope.Hybrid) 
    .TheDefault.Is.ConstructedBy(ctx => HttpContext.Current.User); 

回答

10

对于ASP.NET MVC 1和2:

builder.Register(c => HttpContext.Current.User).HttpRequestScoped(); 

对于ASP.NET MVC 3:

builder.Register(c => HttpContext.Current.User).InstancePerHttpRequest(); 

对于Autofac ASP.NET MVC3集成你可能需要一个look at the documentation(更新链接)。

对于ASP.NET MVC 5:

builder.Register(c => HttpContext.Current.User).InstancePerRequest(); 
+0

是,是不是在这个职位的文档的附加信息? – JJS 2014-02-10 18:09:25

+1

在MVC 5中更改为'InstancePerRequest()'(可能为4)。 – 2014-06-19 01:04:55