Как сжать страницу asp.net на уровне кода? - PullRequest
1 голос
/ 24 февраля 2012

Я добавил метод Application_PreRequestHandlerExecute в global.ascx, например:

void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{

    string cTheFile = HttpContext.Current.Request.Path;
    string sExtentionOfThisFile = System.IO.Path.GetExtension(cTheFile);

    if (sExtentionOfThisFile.Equals(".aspx", StringComparison.InvariantCultureIgnoreCase))
    {
        HttpApplication httpApp = (HttpApplication)sender;

        string acceptEncoding = httpApp.Request.Headers["Accept-Encoding"];
        if (string.IsNullOrEmpty(acceptEncoding))
        {
            return;
        }
        acceptEncoding = acceptEncoding.ToLower();

        System.IO.Stream requestStream = httpApp.Response.Filter;

        if (acceptEncoding.Contains("gzip"))
        {
            httpApp.Response.Filter = new System.IO.Compression.GZipStream(requestStream,
                System.IO.Compression.CompressionMode.Compress);
            httpApp.Response.AppendHeader("Content-Encoding", "gzip");
        }
        else if (acceptEncoding.Contains("deflate"))
        {
            httpApp.Response.Filter = new System.IO.Compression.DeflateStream(requestStream,
                System.IO.Compression.CompressionMode.Compress);
            httpApp.Response.AppendHeader("Content-Encoding", "deflate");
        }
    }

}

Работало при просмотре обычной страницы.

, но если страница содержит UPDATE-PANEL, произойдет ошибка. Я получаю PageRequestParserException. когда асинхронная запись на панели обновлений отправляется обратно, происходит эта ошибка.

есть идеи?

1 Ответ

0 голосов
/ 27 февраля 2012

Я "исправил", установив EnableEventValidation в false на моей странице и переместив логику сжатия в конструктор страницы.Очевидно, что это не очень хорошее решение (тщательная проверка).Если кто-нибудь знает хорошее решение, пожалуйста, дайте мне знать.

и обнаружите, что если версия фреймворка проекта 3.5, все работает нормально, но если версия 2.0.эта ошибка произойдет.

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