Альтернатива Response.End()?
Я обрабатываю запрос begin_request. В данный момент я использую Response.End(), чтобы asp.net не делал ничего другого. Response.End() выбрасывает исключение, есть ли не исключительный способ, которым я могу завершить запрос?
Если вы задаетесь вопросом, почему у меня нет файла, это bc, я сообщаю nginx, какой файл использовать через заголовок ответа http, поэтому мне больше нечего делать в asp.net. Response.End генерирует исключение, которое должно собирать информацию о стеке и все такое. Я, очевидно, не нуждаюсь в этом, и из моих прошлых вопросов я знаю, что бросать исключения - это дорого. Так как же я могу сделать где?
2 ответа
HttpResponse.End()
создает исключение по дизайну; это должно работать.
Только когда ThreadAbortException
брошен, делает поток, который представляет конец ответа. Если нет никаких исключений, ответ не заканчивается.
Одним из вариантов будет позвонить HttpContext.Current.ApplicationInstance.CompleteRequest
вместо. Это предотвратит дальнейшее выполнение кода, перейдя прямо к Application_EndRequest
событие.
вызовите метод HttpContext.Current.ApplicationInstance.CompleteRequest() вместо Response.End, чтобы пропустить выполнение кода для события Application_EndRequest