httpModules не работают на iis7 - PullRequest
16 голосов
/ 29 мая 2010

У меня есть следующий модуль

public class LowerCaseRequest : IHttpModule {
     public void Init(HttpApplication context) {
         context.BeginRequest += new EventHandler(this.OnBeginRequest);
     }

     public void Dispose() { }

     public void OnBeginRequest(Object s, EventArgs e) {
         HttpApplication app = (HttpApplication)s;

         if (app.Context.Request.Url.ToString().ToLower().EndsWith(".aspx")) {
             if (app.Context.Request.Url.ToString() != app.Context.Request.Url.ToString().ToLower()) {
                 HttpResponse response = app.Context.Response;

                 response.StatusCode = (int)HttpStatusCode.MovedPermanently;
                 response.Status = "301 Moved Permanently";
                 response.RedirectLocation = app.Context.Request.Url.ToString().ToLower();
                 response.SuppressContent = true;
                 response.End();
             }
             if (!app.Context.Request.Url.ToString().StartsWith(@"http://zeeprico.com")) {
                 HttpResponse response = app.Context.Response;

                 response.StatusCode = (int)HttpStatusCode.MovedPermanently;
                 response.Status = "301 Moved Permanently";
                 response.RedirectLocation = app.Context.Request.Url.ToString().ToLower().Replace(@"http://zeeprico.com", @"http://www.zeeprico.com");
                 response.SuppressContent = true;
                 response.End();
             }
         }
     }
}

web.config выглядит как

<system.web>
  <httpModules>
      <remove name="WindowsAuthentication" />
      <remove name="PassportAuthentication" />
      <remove name="AnonymousIdentification" />
      <remove name="UrlAuthorization" />
      <remove name="FileAuthorization" />
      <add name="LowerCaseRequest" type="LowerCaseRequest" />
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
</system.web>

На моем компьютере работает XP и IIS 5.1

.

но на моем веб-сервере под управлением IIS7 и WS 2008 ничего не получается, помогите, я не знаю, как это решить.

Спасибо

Ответы [ 3 ]

37 голосов
/ 29 мая 2010

На IIS7 и выше использовать

<configuration>
  <system.webServer>
    <modules>
      <add name="CustomModule" type="Samples.CustomModule" />
    </modules>
  </system.webServer>
</configuration>
0 голосов
/ 31 декабря 2015

Выше приведено для IIS 7.5

<modules>
  <add name="CustomModule" type="Samples.CustomModule" />
</modules>

Единственная проблема, которую я получил, это то, что экземпляр пула приложений для конкретного приложения должен быть установлен как управляемый Pipeline = Integrated, а не Classic ..
или же: Использование классического режима

Если ваше приложение должно использовать классический режим, убедитесь, что ваше приложение настроено для пула этого типа, а ваши модули настроены в разделе system.web, а не в разделе system.webServer файла web.config.

0 голосов
/ 13 ноября 2013

В IIS перейдите к представлению выбора модуля

дважды щелкните модуль, затем щелкните правой кнопкой мыши и нажмите (Добавить управляемый модуль)

затем введите имя и тип, как определено в web.config

пример:

<httpModules>
  <add name="CustomModule" type="WebApplication.Security.CustomModule" />
</httpModules>
...