2011-04-09 5 views
0

Ah à résoudre ce problème, mon esprit est complètement occupé. Quand j'inscris mon httpmodule, je reçois une erreur non trouvée, sinon tout fonctionne comme un charme.ASP.NET MVC + IHttpModule = Non trouvé

Voici mon HttpModule

public class UrlNormalizerModule : HttpModuleBase { 
    protected override void OnBeginRequest(HttpContextBase context) { 
     var originUrl = HttpContext.Current.Request.Url.ToString(); 
     var normalizedUrl = originUrl.NormalizeUrl(false); 
     if (string.Compare(originUrl, normalizedUrl) != 0) { 
      var response = context.Response; 

      response.StatusCode = (int) HttpStatusCode.MovedPermanently; 
      response.Status = "301 Moved Permanently"; 
      response.RedirectLocation = normalizedUrl; 
      response.SuppressContent = true; 
      response.End(); 
     } 
    } 
} 

Comment module inscrire dans Web.config

<system.webServer>   
    <modules runAllManagedModulesForAllRequests="true"> 
     <remove name="UrlNormalizerModule" /> 
     <add name="UrlNormalizerModule" type="MagicByte.Web.Modules.UrlNormalizerModule, MagicByte.Web" /> 
    </modules> 
</system.webServer> 

MISE À JOUR {} temporairement le problème est résolu

Hm ... Je viens manié tous les événements de HttpApplication comme ci-dessous

context.AuthenticateRequest += 
      (sender, e) => OnAuthenticateRequest(new HttpContextWrapper(((HttpApplication) sender).Context)); 

Je ne sais pas pourquoi mais au-dessus du problème résolu quand j'ai manipulé seulement quelques-uns des événements importants tels BeginRequest. Alors, quel est vraiment un problème parce que?

Répondre

0

Vous pouvez essayer sauf l'URL utilisée pour accéder à cette Modul du moteur de routage:

routes.IgnoreRoute("UrlNormalizerModule.ashx"); 
+0

Merci Darin, mais n'a toujours pas de travaux! – Sadegh

Questions connexes