【发布时间】:2014-01-07 20:16:43
【问题描述】:
如何从自托管的 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>() 失败。
【问题讨论】:
-
你想做什么?为 HttpContext 使用 DI?
-
反之,在DI中使用HttpContext
-
在这种情况下您必须使用 HttpContextBase 而不是直接使用 HttpContext。
-
怎么样?我需要一个关于当前线程正在运行的请求的线程静态引用。
-
我发布了代码示例作为答案。我会在需要的地方改进它。我觉得它还没有找到你问题的根源,这就是你的 HttpContext 为空的原因。
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api