HttpModule не перехватывает файлы js и css в IIS 5.1

Я реализую HttpModule для сжатия запроса. Ниже приведен код для HttpModule:

public class Global : IHttpModule
{
public void Init(HttpApplication app)
{
    app.PostReleaseRequestState += new EventHandler(app_PostReleaseRequestState);
}
void app_PostReleaseRequestState(object sender, EventArgs e)
{
    HttpApplication app = (HttpApplication)sender;
    HttpContext context = app.Context;
    string acceptEncoding = context.Request.Headers["Accept-Encoding"];




        // If gzip is supported then gzip it else if deflate compression is supported then compress in that technique.
        if (acceptEncoding.Contains("gzip"))
        {
            // Compress and set Content-Encoding header for the browser to indicate that the document is zipped.
            context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
            context.Response.AppendHeader("Content-Encoding", "gzip");
        }
        else if (acceptEncoding.Contains("deflate"))
        {
            // Compress and set Content-Encoding header for the browser to indicate that the document is zipped.
            context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
            context.Response.AppendHeader("Content-Encoding", "deflate");
        }


}

Он может перехватывать и сжимать js и css на веб-сервере разработки, но когда я запускаю его из IIS 5.1, он не может сжимать файлы js и css. Пожалуйста помоги.


person Niraj Choubey    schedule 14.02.2011    source источник


Ответы (3)


До IIS7 для добавления типов файлов, отличных от ASP.NET, в конвейер ASP.NET требовалось настроить сопоставление типов файлов для перенаправления этих файлов через ISAPI. Если вы отобразите *.js и *.css для обработки ISAPI, ваш код должен начать выполняться для этих запросов.

Вот пример выполнения этого в IIS6 (хотя вы можете заменить *.js и *.css на *.asp). Если я правильно помню, интерфейс управления 5.1 достаточно похож, поэтому пример СкоттГу должен быть полезен.

person Dave Ward    schedule 14.02.2011
comment
нам нужно написать HttpHandler для этого или просто добавить тип файла, он будет работать. - person Niraj Choubey; 14.02.2011
comment
Просто добавьте тип файла. Файлы этих типов начнут работать через ваши HttpModules. - person Dave Ward; 14.02.2011
comment
Убедитесь, что вы перенаправляете эти расширения на ISAPI. Если ничего другого, подумайте о том, чтобы попробовать сопоставление с подстановочными знаками, изменив существующее сопоставление *.aspx на *.*. Таким образом, вы можете быть уверены, что вам назначен правильный обработчик. - person Dave Ward; 14.02.2011

Я бы убедился, что файлы .js и .css обрабатываются платформой .NET.

Справку по IIS 7 и выше можно найти по адресу iis.net/ConfigReference/system.webServer/handlers.

Что касается IIS 6, вы можете проверить, что js и css обрабатываются в разделе: Настройки сайта / Домашний каталог / Настройки приложения / (Пул приложений) Конфигурация / Сопоставления

person E. Jaep    schedule 14.02.2011
comment
но он может перехватывать веб-сервер разработки веб-разработчика 2008. - person Niraj Choubey; 14.02.2011

Вы на правильном пути, используя HttpModule. Однако для изменения содержимого HTML следует использовать обработчик HttpApplication.PostReleaseRequestState. Чтобы изменить файлы ресурсов, вы должны использовать обработчик HttpApplication.BeginRequest.

person L Tran    schedule 18.04.2013