Asp Web Api 生命周期问题
Posted
技术标签:
【中文标题】Asp Web Api 生命周期问题【英文标题】:Asp Web Api Lifecycle issue 【发布时间】:2015-01-15 10:39:26 【问题描述】:我正在使用 web api 2
我有一个身份验证过滤器(实现 IAuthenticationFilter),它检查令牌并在线程和 HttpContext 上设置 ClaimsPrinciple。一个这样的声明是 userId
我正在使用 Windsor 使用此处描述的方法进行依赖注入。 http://blog.ploeh.dk/2012/10/03/DependencyInjectioninASP.NETWebAPIwithCastleWindsor/
这将为我的控制器创建对象图,从而新建控制器所具有的任何依赖项
问题是依赖项之一中的构造函数之一进行了需要用户 ID 的调用
而且似乎 this(构造函数调用)发生在身份验证过滤器设置之前
我有什么选择?
【问题讨论】:
【参考方案1】:当 Web API 需要控制器时,使用依赖注入来创建它。这总是在执行管道之前发生。所以你无法访问后面设置的userid
。
至少有这些解决方案。
在需要时解决依赖关系(即使用 DI 容器作为服务定位器)。 我不喜欢这个 懒惰初始化依赖(我不知道Castle Windsor能不能做到,但看起来有可能:Lazy Loading using Windsor Castle)还不错 更改该组件的实现,并在需要时接收userid
作为参数,以便在您想使用它时可用。 我更喜欢这个
【讨论】:
以上是关于Asp Web Api 生命周期问题的主要内容,如果未能解决你的问题,请参考以下文章