代码之家  ›  专栏  ›  技术社区  ›  HasanG Joe Dabones

如何重定向到预定义的错误页?

  •  0
  • HasanG Joe Dabones  · 技术社区  · 14 年前

    我的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页的名称就可以重定向到404页?例如:响应重定向(404状态编码页); 或者有什么方法可以得到默认的404位置?

    3 回复  |  直到 14 年前
        1
  •  2
  •   aronchick    14 年前

    好吧,你 可以 当然,如果需要,可以通过编程方式从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; 
            }
        }
    }
    

    比应该的更丑,但这就是你读你想要的东西的方式。

        2
  •  1
  •   Community gview    7 年前

    从这里回答: 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");
        }
      }
    }
    
        3
  •  0
  •   ddc0660    14 年前

    不,不幸的是,这些路径只适用于静态页面路径。