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.