Вернуть HttpStatusCode.BadRequest из метода Initialize

Я хочу вернуть код состояния BadRequest из метода Initialize. Я понимаю, как я могу сделать это из любого действия ( return new HttpStatusCodeResult(HttpStatusCode.BadRequest) ), но как это сделать из Initialize? Я пробую следующее:

requestContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;

но я получаю

Сведения об исключении: System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта.

если я не позвоню

base.Initialize(requestContext);

person Oleg Sh    schedule 30.06.2017    source источник


Ответы (2)


это по замыслу, вы должны переопределить метод Initialize и вызвать его в базовом методе, чтобы контроллер получил контекст http.

https://msdn.microsoft.com/en-us/library/system.web.mvc.controller.initialize(v=vs.118).aspx

person dee zg    schedule 30.06.2017

Вы можете использовать HttpContext.Current как;

HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.BadRequest; HttpContext.Current.Response.End(); return;
person TSungur    schedule 30.06.2017
comment
вернуть пустую страницу - person Oleg Sh; 30.06.2017
comment
Если вам не нужна пустая страница, просто измените статус. Еще один интересный момент: если вы хотите обработать страницу и не вернуть ее пустой, по какой причине вы не должны вызывать base.Initialize? - person TSungur; 30.06.2017
comment
Я просто хочу вернуть страницу, которая возвращается, когда мы вызываем return new HttpStatusCodeResult(HttpStatusCode.BadRequest) - person Oleg Sh; 30.06.2017