Я пытаюсь отладить странную проблему, возникшую у меня с решением MVC2, унаследованным от предыдущих разработчиков.
Проблема заключается в том, что если, например, я удаляю необходимую точку с запятой из Site.Master, я не вижу соответствующей страницы «Ошибка сервера» при попытке запустить сайт. Вместо этого я вижу полный экран мусорных персонажей. IE предлагает открыть / сохранить файл вместо рендеринга текста мусора по умолчанию - но если вы откроете, вы увидите тот же мусор.
Я немного ковырялся в Firebug, но я не увидел ничего супер полезного. Я могу только предположить, что часть кода ожидает допустимой разметки, получает недопустимую разметку и выдает ответ, который закодирован по-разному из-за этой недопустимой разметки.
Этого не происходит в примере проекта, но только в этом приложении для разработки. Я понятия не имею, что происходит, когда запускается неверная наценка. Любой совет, как отследить эту проблему дальше?
Пример
EDIT:
- Пользовательская обработка ошибок не включена.
- В каталоге / Views / Shared есть страница «Error.aspx», за исключением того, что она, похоже, ничего не делает для проекта.
- Нет расширений контроллера OnException.
- Я пытался закомментировать весь контент из мастер-страницы, а затем выбрасывал ошибку сервера - все равно генерируется мусор.
- Посмотрел на Global.asax и не увидел ничего необычного.
- Просматривал веб-конфиг. Это довольно большой. Я искал вещи, касающиеся ошибок, не видел ничего, кроме того, что отмечал, что пользовательская обработка ошибок не была включена.
EDIT2: Вот код, вызывающий проблемы. Я пока не знаю, почему, но я решил опубликовать это для науки.
public class CompressionFilterAttribute : ActionFilterAttribute
{
//public override void OnActionExecuting(ActionExecutingContext context)
//{
// HttpRequestBase request = context.HttpContext.Request;
// string acceptEncoding = request.Headers["Accept-Encoding"];
// if (string.IsNullOrEmpty(acceptEncoding))
// return;
// acceptEncoding = acceptEncoding.ToUpperInvariant();
// HttpResponseBase response = context.HttpContext.Response;
// if (acceptEncoding.Contains("GZIP"))
// {
// response.AppendHeader("Content-encoding", "gzip");
// response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
// }
// else if (acceptEncoding.Contains("DEFLATE"))
// {
// response.AppendHeader("Content-encoding", "deflate");
// response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
// }
//}
}