2009-08-12 12 views
0

Ich versuche eine URL-Rewrite basierend auf einem 404 zu tun. Meine Logik sucht nach dem "aspxerrorpath", aber es wird immer als Null angezeigt. Mein Code funktioniert einwandfrei auf dem Dev-Server. Ich habe Kundenfehler eingeschaltet. Ich habe auch Kundenfehler in der IIS-Systemsteuerung, die auf meinen Handler zeigt. Ideen, warum es die 404 URL nicht passiert ???aspxerrorpath NULL Auf IIS 6

public class UrlHandler : Handler301 
{ 
    protected override string getRedirectionUri() 
    { 
     HttpContext.Current.Response.ContentType = "text/plain"; 

     String request = HttpContext.Current.Request.QueryString["aspxerrorpath"]; 
     if (request != null) 
     { 
      SomeUrl url = getUrlLogic(); 

      if (url != null) 
      { 
       return url.ReferencedUrl; 
      } 
      else 
      { 
       return ConfigurationManager.AppSettings["404RedirectionUri"]; 
      } 
     } 
     else 
     { 
      String site = HttpContext.Current.Request.Url.AbsoluteUri; 

      return site.Substring(0, site.LastIndexOf('/')); 
     } 
    } 
} 

Antwort

0

Stellt sich heraus, IIS hat seine Abfrage-String anders als die Dev-Server:?

String request = HttpContext.Current.Request.QueryString["aspxerrorpath"]; 

if (StringUtils.isNullOrEmpty(request)) 
{ 
    String rawUrl = HttpContext.Current.Request.RawUrl; 

    if (rawUrl.Contains("?404")) 
    { 
     request = rawUrl.Substring(rawUrl.LastIndexOf('/')); 
    } 
} 

Es nutzt die Query-String anstelle des aspxerrorpath Abfrage-String, der ASP.NET-Entwicklungsserver verwendet.

Verwandte Themen