如何从自托管 MVC WebAPI 访问查询字符串?
调用以下对象失败并返回 NRE,因为 Current 为空(又名 null)
System.Web.HttpContext.Current.Request["myQuery"]
我需要访问 Controller 外部的当前上下文,因为我想通过控制我的对象实例化。迪。例如。
container
.RegisterType<MyObject>(
new InjectionFactory(
uc =>
new MyObject(
System.Web.HttpContext.Current.Request["myParam"]) //This failed.
));
调用 container.Resolve<MyObject>()
由于上述 NRE,来自 ControllerApi 代码的内部失败。
最佳答案
您不应该在 Web API 中真正使用 System.Web.HttpContext.Current
。它仅在使用 Web 主机时有效,并且实际上仅出于遗留原因才存在。上下文信息隐藏在 HttpRequestMessage.Properties
集合中。
Web API 提高可测试性的方法之一是消除对静态属性的依赖。
有多种方法可以处理实例解析和传递参数。看这个问题Unity Application Block, How pass a parameter to Injection Factory?
关于c# - 在自托管 WebApi 中获取 HttpRequest 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14349557/