Как проверить, вызывается ли Application_BeginRequest для статических ресурсов, таких как изображения, на реальном веб-сервере IIS?

У нас есть веб-сайт ASP.NET 4.0, и мы используем событие Application_BeginRequest в Global.asax для некоторых интеллектуальных перенаправлений. При отладке решения на локальном сервере разработки ASP.NET, предоставляемом Visual Studio (без IIS), Application_BeginRequest вызывается как для страниц apsx, так и для статических ресурсов, таких как файлы css, изображения jpg / gif и т. Д., Которые содержат наши страницы.

Это известная проблема, но как насчет реального хостинга IIS нашего провайдера хостинга (Windows 2008/IIS 7.0)? Как мы можем проверить, происходит ли это для статических ресурсов? И как это запретить?

2 ответа

Все запросы будут проходить через Application_BeginRequest, если вы не укажете веб-серверу вести себя по-другому, установив для runAllManagedModulesForAllRequests значение false.

       <system.webServer>
  <modules runAllManagedModulesForAllRequests="false" />
 </system.webServer>

Если у вас нет доступа к web.config, вы можете настроить быстрый тест: опубликовать два разных изображения: redirect.jpg и noredirect.jpg и установить перенаправление в Application_BeginRequest и посмотреть, происходит это или нет.

      var url = ((System.Web.HttpApplication)sender).Request.Url;
if (url.EndsWith("noredirect.jpg"))
{
 Response.Redirect(url.replace("noredirect.jpg","redirect.jpg"));
}

Затем попробуйте получить доступ к «noredirect.jpg», если вместо этого отображается «redirect.jpg», значит, перенаправление в действии (= настройка по умолчанию)

Ты можешь попробовать;

if (Request.Path.ToLowerInvariant().IndexOf(".aspx") > -1)
{
    // static files
}
Другие вопросы по тегам