如何从自托管MVC WebAPI访问查询字符串?
调用NRE失败,因为Current是空的。null)
System.Web.HttpContext.Current.Request["myQuery"]
我需要访问控制器外部的当前上下文,因为我想通过控制对象实例化。DI。如:
container
.RegisterType<MyObject>(
new InjectionFactory(
uc =>
new MyObject(
System.Web.HttpContext.Current.Request["myParam"]) //This failed.
));
由于上述NRE,从ControllerApi代码内部调用container.Resolve<MyObject>()
失败。
你真的不应该在Web API中使用System.Web.HttpContext.Current
。它仅在使用Web主机时有效,并且实际上仅存在于遗留原因。上下文信息隐藏在HttpRequestMessage.Properties
集合中。
Web API提高可测试性的方法之一是消除对静态属性的依赖。
有很多方法可以处理实例解析和传递参数。参见这个问题,如何将参数传递给注入工厂?
HttpContext。当前在自托管项目中不可用
参见:HttpSelfHostServer和HttpContext。当前