Как отследить жизненный цикл ошибки сервера в MVC2? - PullRequest
0 голосов
/ 22 июня 2011

Я пытаюсь отладить странную проблему, возникшую у меня с решением 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);
    //    }
    //}
}

1 Ответ

1 голос
/ 22 июня 2011

Вы сжимаете свои страницы (например, gzip)? Убедитесь, что ваша страница не сжата ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...