如何在ASP.NET MVC中获得对HttpResponse的引用?

Mik*_*ner 25 asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 asp.net-mvc-4

我正在打电话给第三方图书馆System.Web.HttpResponse.我看到我有一个HttpResponseBase,但不HttpResponse喜欢在网络表单中.

有办法搞定HttpResponse吗?用MVC 3.

[编辑]:我正在尝试在控制器方法中执行此操作.还纠正了套管.

Lev*_*evi 37

如果需要与采用非可模拟类型的系统进行交互,则可以通过静态属性System.Web.HttpContext.Current访问当前的HttpContext .HttpResponse只是通过Response属性挂在那里.


小智 11

在mvc应用程序中,您可以使用HttpContext.ApplicationInstance.Response.这有助于我获得HttpResponseMVC应用程序.


sma*_*man 5

不,但您HttpResponseBase的可能是HttpResponseWrapper其中包含一个HttpResponse内部。所有HttpResponse方法都可以从HttpResponseBase.

如果您想访问HttpResponse,那么您可以HttpContext.Items在您IHttpHandler的 ASP.NET 生命周期中或更早的某个地方添加对它的引用。BeginRequest 事件将是执行此操作的一个好点。

HttpContext.Items引用了与引用相同的字典HttpContextBase.Items,因此您可以访问 MVC3 中的所有这些项目

澄清,

它是一个HttpResponseWrapper,但没有用于HttpResponse. 因此,没有可直接访问的参考。要在框架决定开始为您提供包装器而不是底层引用之前创建一个可直接访问的引用,请为HttpApplication.BeginRequestevent创建一个事件处理程序。您的处理程序将引用该HttpContext对象。设置HttpContext.Items["HttpRequest"] = HttpContext.Request。然后在您的控制器中,您将能够HttpRequest通过RequestContext.HttpContext.Items["HttpRequest"].