JS, Изображения и CSS, перехваченные HTTPModule - PullRequest
5 голосов
/ 21 января 2010

У меня есть простой 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 - сервер Кассини

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

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

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

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

Ответы [ 2 ]

13 голосов
/ 23 января 2010

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

http://learn.iis.net/page.aspx/121/iis-70-modules-overview/#Disabling

установка 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

BUG: управляемые запросы IIS7

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

0 голосов
/ 21 января 2010

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

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

...