c# asp.net asp.net-2.0 httphandler httpmodule

c# - httpModules no funciona en iis7



asp.net asp.net-2.0 (3)

En IIS, vaya a la vista de características, seleccione el módulo

haga doble clic en el módulo, luego haga clic con el botón derecho y presione (Agregar módulo administrado)

luego ponga el nombre y el tipo como se define en web.config

ejemplo:

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

Tengo el siguiente modulo

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

el web.config parece

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

Funciona en mi PC ejecutando XP e IIS 5.1

pero en mi servidor web que ejecuta IIS7 y WS 2008 no funciona, por favor, ayuda, no sé cómo resolverlo.

Gracias


En IIS7 y mayor uso

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


Lo anterior es correcto para IIS 7.5

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

El único problema que tengo es que la instancia del grupo de aplicaciones para una aplicación en particular debe configurarse como administrado Pipeline = Integrated, no Classic.
o: usando el modo clásico

Si su aplicación utiliza el modo Clásico, asegúrese de que su aplicación esté configurada para ese tipo de grupo y que los módulos estén configurados en la sección system.web y no en la sección system.webServer del archivo web.config.