2009-09-10 11 views
2

J'écris un C# HttpModule personnalisé qui gérera les requêtes de tous les types de fichiers. Comme preuve de concept simple, j'ai installé le module en ajoutant une référence à la section httpModules de la configuration web et ajouté des extensions d'application pour le site web de démo IIS avec une référence à aspnet_isapi.dll pour intercepter seulement la requête ". Mais même s'il n'y a pas de code significatif dans l'événement "OnBeginRequest" (code ci-dessous), cela provoque une boucle de redirection infinie. J'utilise IIS 5 sur XP Quelqu'un a-t-il des idées?Personnalisé C# HttpModule Infinite Redirect Loop

Jusqu'à présent, je n'ai vu que des exemples HttpModule à utiliser avec les fichiers ASPX mais vous pouvez sûrement les configurer pour n'importe quel type de fichier?

 
#region IHttpModule Members 

     public void Dispose() { } 

     public void Init(HttpApplication context) 
     { 
      context.BeginRequest += new EventHandler(OnBeginRequest); 
     } 

     /// 
     /// 
     /// 
     /// 
     public void OnBeginRequest(Object s, EventArgs e) 
     { 
      HttpApplication context = s as HttpApplication; 

      Uri currentURL = context.Request.Url; 
      string pageName = currentURL.Segments.Last().ToLower(); 
     } 
#endregion
+1

Oui. Ce n'est pas là que réside le problème. Vous regardez au mauvais endroit. Dunno où cela se passe, tho. – Will

+0

Je suis d'accord avec cela, mais c'est une installation IIS 5.0 par défaut, donc je ne suis pas sûr de ce qui cause le problème. Quelqu'un at-il déjà essayé de configurer HttpModules pour les fichiers .htm? –

Répondre

1

OK. Le problème était en fait dans le HttpModule lui-même.

Il semble que vous devez utiliser le contexte HttpApplication pour qu'il soit rendu sur le client.

Par exemple après avoir effectué toutes vos logique personnalisée vous devez écrire dans le contexte:

 
context.Response.Write("/n/r"); 

//or 

context.Response.Redirect("test.htm"); 

Tout rend alors que vous attendez