【问题标题】:How to handle 404 error on server in asp.net如何在asp.net中处理服务器上的404错误
【发布时间】:2019-07-02 11:53:20
【问题描述】:

我使用了以下代码:

<customErrors mode="On" defaultRedirect="~/ErrorPage/Default.aspx">
      <error statusCode="403" redirect="~/ErrorPage/Default.aspx"/>
      <error statusCode="404" redirect="~/ErrorPage/Default.aspx"/>
      <error statusCode="400" redirect="~/ErrorPage/Default.aspx"/>
      <error statusCode="500" redirect="~/ErrorPage/Default.aspx"/>
</customErrors>

以上代码在本地服务器上运行良好,但在服务器上上传时,404 异常不会重定向到错误页面。

我得到以下服务器错误:

【问题讨论】:

  • 你的 web.config 文件有任何转换吗?

标签: c# asp.net http-status-code-404


【解决方案1】:

在 global.asax 中创建这个方法

    public void Application_Error()
    {
    var routeData = new RouteData();
        routeData.Values.Add("controller", "yourControllerNameForError");
        routeData.Values.Add("action", "YourActionMethodeForError");

        if (exception is HttpException httpException)
        {              
            switch (httpException.GetHttpCode())
            {
                case 404:            
                    routeData.Values["action"] =  "Your404MethodeError";
                    break;                 
            }
        }

        Server.ClearError();
        Response.TrySkipIisCustomErrors = true;
        IController errorController = new ErrorController();
        errorController.Execute(new System.Web.Routing.RequestContext (
             new HttpContextWrapper(Context), routeData));
}

【讨论】:

  • 我也试过这个: void Application_Error(object sender, EventArgs e) { var serverError = Server.GetLastError() as HttpException; if (serverError != null) { if (serverError.GetHttpCode() == 404) { Server.ClearError(); Server.Transfer("~/ErrorPage/Default.aspx"); } if (serverError.GetHttpCode() == 500) { Server.ClearError(); Server.Transfer("~/ErrorPage/Default.aspx"); } } }
  • 但是 404 错误仍然没有重定向到错误页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多