我正在调用一个第三方库,它需要一个System.Web.HttpResponse
. 我看到我有一个HttpResponseBase
,但HttpResponse
不像网络表单中的那样。
有没有办法得到HttpResponse
?使用MVC 3
.
[编辑]:我正在尝试在控制器方法中执行此操作。还修正了外壳。
我正在调用一个第三方库,它需要一个System.Web.HttpResponse
. 我看到我有一个HttpResponseBase
,但HttpResponse
不像网络表单中的那样。
有没有办法得到HttpResponse
?使用MVC 3
.
[编辑]:我正在尝试在控制器方法中执行此操作。还修正了外壳。
如果您需要与采用不可模拟类型的系统进行交互,您可以通过静态属性System.Web.HttpContext.Current访问当前的 HttpContext 。HttpResponse 只是通过 Response 属性挂在那里。
在 mvc 应用程序中,您可以使用HttpContext.ApplicationInstance.Response
.This 帮助我获得HttpResponse
在 MVC 应用程序中。
不,但你HttpResponseBase
的可能是HttpResponseWrapper
其中包含它的HttpResponse
内部。所有HttpResponse
方法都可以从HttpResponseBase
.
如果您想访问,那么您可以在您的或 ASP.NET 生命周期早期的某个地方HttpResponse
添加对它的引用。BeginRequest 事件将是执行此操作的好方法。HttpContext.Items
IHttpHandler
您HttpContext.Items
引用了相同的字典HttpContextBase.Items
,因此您将可以访问 MVC3 中的所有这些项目
它是一个HttpResponseWrapper
,但没有HttpResponse
. 因此,没有可直接访问的参考。要在框架决定开始为您提供包装器而不是底层引用之前创建可直接访问的引用,请为HttpApplication.BeginRequest
事件创建一个事件处理程序。您的处理程序将引用该HttpContext
对象。设置HttpContext.Items["HttpRequest"] = HttpContext.Request
。然后在您的控制器中,您将能够HttpRequest
通过RequestContext.HttpContext.Items["HttpRequest"]
.