2010-07-23 2 views
0

У меня есть параметры страницы ошибок в моем web.config как:Как перенаправить на предопределенную страницу ошибок?

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

Есть простой способ для перенаправления на страницу 404, не вводя его имя? Пример: Response.Redirect (404 страница с кодом состояния); Или есть способ получить местоположение по умолчанию 404?

ответ

2

Ну вы можете конечно, получить настройки из файла web.config программным способом, если вы хотите - http://msdn.microsoft.com/en-us/library/system.configuration.configurationsectiongroup.aspx - грубый код:

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; 
     } 
    } 
} 

уродливее чем это должно быть, но так вы читали, что хотите.

+0

Хотя я реализовал другой способ обработки ошибок, это ближайший ответ. –

0

Нет, к сожалению, эти пути работают только со статическими путями страниц.

1

От ответа здесь: 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"); 
    } 
    } 
} 
Смежные вопросы