httpModules not working on iis7

时光总嘲笑我的痴心妄想 提交于 2019-11-27 23:19:19

问题


I have the following module

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();
             }
         }
     }
}

the web.config looks like

<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>

It works grate on my PC running XP and IIS 5.1

but on my webserver running IIS7 and WS 2008 dosn't works, please help I don't know how to work this out.

Thanks


回答1:


On IIS7 and higher use

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



回答2:


Above is correct for IIS 7.5

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

the only problem I got, is that instance of application pool for particular application should be set to managed Pipeline = Integrated, not Classic..
or: Using Classic Mode

If your application is to use Classic mode, then make sure that your application is configured for that type of pool and your modules are configured in system.web section and not in system.webServer section of web.config file.




回答3:


In IIS go to feature view select module

double click to module then right click and press (Add Managed Module)

then put name and type as defined in web.config

example:

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


来源:https://stackoverflow.com/questions/2935383/httpmodules-not-working-on-iis7

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!