2009-08-12 7 views
0

J'essaye de faire une réécriture d'URL basée sur un 404. Ma logique vérifie le "aspxerrorpath", mais elle apparaît toujours comme nulle. Mon code fonctionne parfaitement bien sur le serveur de dev. J'ai les couturiers activés. J'ai également des couturiers dans le panneau de contrôle d'IIS pointant vers mon gestionnaire. Des idées sur pourquoi il ne passe pas le 404 url ​​???aspxerrorpath NULL sur 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('/')); 
     } 
    } 
} 

Répondre

0

Turns sur IIS fait sa chaîne de requête différente de celle du serveur dev:?

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

Il utilise la chaîne de requête au lieu de la aspxerrorpath chaîne de requête le serveur de développement ASP.NET utilise.

Questions connexes