Вопрос

Я звоню сторонней библиотеке, которая берет System.Web.HttpResponse. Анкет Я вижу, у меня есть HttpResponseBase, но нет HttpResponse как в веб -формах.

Есть ли способ получить HttpResponse? С использованием MVC 3.

Редактировать : Я пытаюсь сделать это методом контроллера. Также исправленный корпус.

Это было полезно?

Решение

Если вам нужно взаимодействовать с системами, которые принимают нецелевые типы, вы можете получить доступ к текущему httpcontext через статическое свойство System.web.httpcontext.current. Анкет Httpresponse просто протягивает от себя свойство ответа.

Другие советы

В приложении MVC вы можете использовать HttpContext.ApplicationInstance.Response. Это помогло мне получить HttpResponse в приложении MVC.

Нет, но твой HttpResponseBase Вероятно, это HttpResponseWrapper который содержит HttpResponse внутри. Все HttpResponse Методы доступны из HttpResponseBase.

Если вы хотите получить доступ к HttpResponse, тогда вы можете добавить ссылку на это в HttpContext.Items в твоей IHttpHandler или где -то раньше в жизненном цикле ASP.NET. Событие BeginRequest было бы хорошим моментом для этого.

Ваш HttpContext.Items ссылка на тот же словарь, что и HttpContextBase.Items Ссылки, поэтому у вас будет доступ ко всем этим элементам в MVC3

Чтобы уточнить,

Это HttpResponseWrapper, но нет общедоступного доклада для HttpResponse. Анкет Таким образом, нет непосредственно доступной ссылки. Чтобы сделать непосредственно доступную ссылку, прежде чем фреймворк решит начать предоставлять вам обертку вместо базовой ссылки, создайте обработчик событий для HttpApplication.BeginRequest мероприятие. Ваш обработчик будет иметь ссылку на HttpContext объект. Установлен HttpContext.Items["HttpRequest"] = HttpContext.Request. Анкет Затем в вашем контроллере вы сможете получить доступ к HttpRequest ссылка на RequestContext.HttpContext.Items["HttpRequest"].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top