c# - 在自托管 WebApi 中获取 HttpRequest 上下文

标签 c# asp.net-mvc asp.net-mvc-4 asp.net-web-api

如何从自托管 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/

相关文章:

c# - 在 DbContext 之外延迟加载

c# - 如何更改在预览 Pane 中显示或打开的 MailItem

c# - 如何从 MVC 中的部分页面设置页面标题

asp.net-mvc-4 - 在azure devops上构建asp.net mvc 4.5网站

c# - 绑定(bind)到由在后台工作的线程创建的对象的属性

c# - 从 MSBuild 3.5 而不是 Visual Studio 编译的类型推断失败 (CS0246)

vb.net - 证明我的错误: VB. NET HtmlHelper扩展方法无法在VS 2012的MVC 4中使用

c# - 无法从 Azure 网站上的 MVC4 应用程序连接到 MySQL

jquery - MVC + jQuery : how to create an input text through Html. TextBox() 并指定 "class"属性

c# - 带有 LEFT JOIN 条件子查询的 LINQ 查询