JS, изображения и CSS перехватываются HTTPModule
-
22-09-2019 - |
Вопрос
У меня есть простой 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
Другие советы
Да, он будет вызываться для любого типа файлов.
В этих модулях типично фильтровать все, что вас не интересует, например.проверив, содержит ли HttpContext.Request.Url.AbsolutePath '/_layouts' в SharePoint.