Короче говоря, у меня есть приложение ASP.NET, которое я пытаюсь отладить и в какой-то момент при очень конкретных обстоятельствах, приложение выдаст исключения в a Response.Redirect()
утверждение:
"Cannot redirect after HTTP headers have been sent."
Который я более или менее получаю, за исключением того, что я не могу выяснить, куда заголовки были отправлены.
Там что-то должно искать в приложении ASP.NET, которое укажет, что HTTP-заголовки были отправлены?
БОНУСНАЯ ТРУДНОСТЬ: приложение ASP.NET находится все еще в.NET 1.1. Обстоятельства относительно задержки позади обновления являются действительно больным вопросом.
HttpApplication
имеет событие PreSendRequestHeaders
, которое вызывается только при записи заголовков. Подпишитесь на это и запишите это или добавьте точку останова.
Кроме того, HttpResponse
имеет внутреннее свойство , называемое HeadersWritten
(поле _headersWritten
в .NET 1.1). Поскольку он внутренний, вы не можете получить к нему доступ напрямую, но можете через отражение. Если это только для внутренней отладки (т.е. не для производственного кода), тогда можно использовать отражение.
Проверяйте этот метод до / после всех событий жизненного цикла страницы. Как только вы узнаете, какое событие записывает заголовки, добавьте дополнительные проверки HeadersWritten
, чтобы узнать, куда они записываются. Вы его найдете, постепенно сужая количество проверок до этого свойства.
Новое свойство info
HeadersWritten
открыто, начиная с .Net 4.5.2