Вопрос

У меня есть простой HTTPModule, который выполняет пользовательское управление состоянием сеанса.

public void Init(HttpApplication context)
        {
            context.AcquireRequestState += new EventHandler(ProcessBeginRequest);
            ActivityLogger.LogInfo( DateTime.UtcNow.ToLongTimeString() + " In Init " + HttpContext.Current.Request.Url.AbsoluteUri);
        }

и

public void ProcessBeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest ");
            if (application != null)
            {
                string requestURL = application.Context.Request.Url.ToString();
                ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest " + requestURL);
            }
            return;
        }

Когда я запустил этот код с точками останова, я увидел, что этот модуль вызывается даже для статических файлов, таких как изображения, js и css.Кто-нибудь испытал это?Я думаю, что HTTP-модули подключались только к событиям в http-конвейере для страниц asp.net.Подключаются ли они также к статическим ресурсам?Или это только Кассини?

Среда:VS2008 — сервер Кассини

ПС:Я попробовал это с Win2k8 IIS7 в нашей песочнице (вроде новой) и попытался записать это в файл журнала (поскольку у нас там нет VS), но не смог записать в файл журнала.Я уверен, что это проблема с разрешениями на запись.Может ли кто-нибудь указать мне какой-нибудь ресурс, который расскажет мне, как установить разрешения на запись для каталогов при запуске ASP.net с IIS7 в W2k8?

Редактировать1:Я понимаю, что использование интегрированного конвейера расширит конвейеры http как для статических, так и для управляемых ресурсов.http://aspnet.4guysfromrolla.com/articles/122408-1.aspx и http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/

В нашем продукте мы используем классический конвейер.Но все же интересно узнать, что испытали другие люди.

Вопрос 2:Использование IIS7 в интегрированном режиме снизит ли производительность?Допустим, у вас есть пара модулей, подключенных к конвейеру, насколько это повлияет на производительность?Было бы неплохо, если бы кто-нибудь указал мне на некоторые базовые исследования, проведенные для этого.

Это было полезно?

Решение

Похоже, есть способ сделать это

http://learn.iis.net/page.aspx/121/iis-70-modules-overview/#Отключение

параметр preCondition="managedHandler" и <modules runAllManagedModulesForAllRequests="false" /> сделал бы свое дело

себе на заметку:http://code.google.com/p/talifun-web/wiki/StaticFileHandlerнужно изучить этот StaticFileHandler

Рекомендации:

http://learn.iis.net/page.aspx/244/how-to-take-advantage-of-the-iis7-integrated-pipeline/

Исключить запуск HttpModule для статического содержимого в IIS7

ОШИБКА:Управляемые запросы IIS7

http://msdn.microsoft.com/en-us/library/bya7fh0a.aspx

Другие советы

Да, он будет вызываться для любого типа файлов.

В этих модулях типично фильтровать все, что вас не интересует, например.проверив, содержит ли HttpContext.Request.Url.AbsolutePath '/_layouts' в SharePoint.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top