【发布时间】:2014-01-13 13:23:19
【问题描述】:
我有 mvc4 WebAPI 应用程序与城堡 Windsor 拦截。
拦截器类需要HttpContext.Current.Session.
当我直接从拦截器调用它时,它是空的。
所以我在这里读到我需要注入 Session 而不仅仅是在拦截器中访问它。
这是我最终得到的代码...
protected void Application_Start()
{
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container.Kernel));
this.RegisterDependencyResolver();
this.container.Install(new WindsorWebApiInstaller());
}
public class WindsorWebApiInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
// the following interceptor needs Session object
container.Register( Component.For<IInterceptor>()
.ImplementedBy<SecurityInterceptor>()
.LifestylePerWebRequest()
.Named("SecurityInterceptor"));
// session is null here, So Castle wont inject it and throw exception...
container.Register(
Component.For<HttpSessionStateBase>().UsingFactoryMethod(
() => new HttpSessionStateWrapper(HttpContext.Current.Session)).LifestylePerWebRequest());
}
}
还有其他方法可以从拦截器访问会话吗?
谢谢
【问题讨论】:
标签: asp.net-mvc-4 session asp.net-web-api castle-windsor