2010-07-23 3 views
0

Je paramètres de la page d'erreur dans mon web.config comme:Comment rediriger vers la page d'erreur prédéfinie?

<customErrors mode="RemoteOnly" defaultRedirect="ErrorDocs/500.htm"> 
    <error statusCode="404" redirect="ErrorDocs/404.htm"/> 
    <error statusCode="403" redirect="ErrorDocs/403.htm"/> 
</customErrors> 

est-il un moyen simple de se rediriger vers la page 404 sans avoir à taper son nom? Ex: Response.Redirect (page codée d'état 404); Ou est-il un moyen d'obtenir l'emplacement par défaut 404?

Répondre

2

Eh bien, vous peut certainement obtenir les paramètres de votre fichier web.config programme si vous voulez - http://msdn.microsoft.com/en-us/library/system.configuration.configurationsectiongroup.aspx - Code rugueux:

string my404Setting; 

    // Get the application configuration file. 
    System.Configuration.Configuration config = 
     ConfigurationManager.OpenExeConfiguration(
     ConfigurationUserLevel.None); 

    foreach (ConfigurationSectionGroup sectionGroup in config.SectionGroups) 
    { 
     if (sectionGroup.type == "customErrors") 
     { 
      foreach (ConfigurationSections section in sectionGroup.Sections) 
      { 
       if (section.StatusCode = "404") 
       { 
        my404Setting = section.Redirect; 
        break; 
       } 
      } 
      break; 
     } 
    } 
} 

laids que ce devrait être, mais c'est comme ça que vous liriez ce que vous voulez.

+0

Bien que j'aie implémenté une autre façon de gérer les erreurs, c'est la réponse la plus proche. –

0

Non, malheureusement, ces chemins ne fonctionnent qu'avec des chemins de page statiques.

1

De réponse ici: Best way to implement a 404 in ASP.NET

protected void Application_Error(object sender, EventArgs e){ 
    // An error has occured on a .Net page. 
    var serverError = Server.GetLastError() as HttpException; 

    if (null != serverError){ 
    int errorCode = serverError.GetHttpCode(); 

    if (404 == errorCode){ 
     Server.ClearError(); 
     Server.Transfer("/Errors/404.htm"); 
    } 
    } 
}