【问题标题】:Convert HttpRequestMessage to HttpRequest将 HttpRequestMessage 转换为 HttpRequest
【发布时间】:2013-04-22 18:05:13
【问题描述】:

我正在将 ASP.NET Web 应用程序转换为 MVC Web Api 项目。 我的一种方法需要HttpRequest 类。但是,Web Api 控制器仅包含 HttpRequestMessage (this.Request) 对象。 你知道如何将HttpRequestMessage 转换为HttpRequest 吗?

【问题讨论】:

    标签: asp.net-mvc httprequest


    【解决方案1】:

    尝试使用您的 HttpRequestBase 来使用/创建一个 HttpRequestWrapper。

    【讨论】:

    • 如何获得“HttpRequestBase”?我应该自己创建一个吗? (即创建新对象并将“HttpRequestMessage”参数复制到它)
    • 你可以使用((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request获取HttpRequestBase
    【解决方案2】:

    您可能不需要从 HttpRequestMessage 进行转换。还有一种方法:

    var context = new HttpContextWrapper(HttpContext.Current);
    HttpRequestBase request = context.Request;
    

    【讨论】:

    • System.Web.HttpContext.Current.Request
    • 这对我来说似乎非常像欺骗,但如果我想编写可以从 ASP.NET Web API 控制器和 ASP.NET MVC 控制器调用的函数,我就不得不这样做。对于我这一生,我不理解 Web API 不能仅仅建立在 MVC 之上(因此 ApiController 可能是普通 MVC 控制器的子类)。相反,如果你想同时使用 MVC 和 API,你必须在两个平行但不兼容的世界之间导航,每个世界都有相同的概念。
    • 我在 another answer 下的 cmets 上看到您不应该在 Web API 项目中使用 System.Web.HttpContext.Current - 您可以改用 (HttpContextWrapper)Request.Properties["MS_HttpContext"]
    猜你喜欢
    • 2018-01-27
    • 2013-07-13
    • 2013-03-21
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 2013-02-22
    • 2010-11-29
    相关资源
    最近更新 更多