ASP.NET MVC自定义错误页面无法正常工作

乔纳森·伍德

我正在尝试配置ASP.NET MVC自定义错误页面。

我添加了一个Error带有IndexPageNotFound动作控制器我还在web.config文件<system.web>部分中添加了以下内容

<customErrors mode="On" defaultRedirect="~/Error">
  <error statusCode="404" redirect="~/Error/PageNotFound"/>
  <error statusCode="500" redirect="~/Error" />
</customErrors>

如果我输入URL,例如http://www.example.com/Home/BadPage,我实际上会看到我的错误处理程序。

但是,谁能帮助我理解以下问题以及如何解决这些问题?

  1. 在上述情况下,返回到浏览器的结果代码似乎是200,而不是404。因此,诸如Google的爬网程序将不会指示未找到URL。
  2. 在某些情况下,如果我的控制器操作确定URL无效,则该操作将HttpNotFound()作为结果返回但是,发生这种情况时,不会显示我的自定义错误处理程序页面相反,它显示了一个通用404页面,该页面似乎来自IIS。

我正在使用Visual Studio和MVC的当前版本。

除了设置里面的web.config,你还需要检查异常是否是HttpException 404的Application_Error

<customErrors defaultRedirect="~/Common/Error" mode="On">
  <error statusCode="404" redirect="~/Common/PageNotFound"/>
</customErrors>

Global.asax.cs

protected void Application_Error(object sender, EventArgs e)
{
    var exception = Server.GetLastError();

    // Process 404 HTTP errors
    var httpException = exception as HttpException;
    if (httpException != null && httpException.GetHttpCode() == 404)
    {
        Response.Clear();
        Server.ClearError();
        Response.TrySkipIisCustomErrors = true;

        IController controller = new CommonController();

        var routeData = new RouteData();
        routeData.Values.Add("controller", "Common");
        routeData.Values.Add("action", "PageNotFound");

        var requestContext = new RequestContext(
             new HttpContextWrapper(Context), routeData);
        controller.Execute(requestContext);
    }
}

通用控制器

您还想返回PageNotFoundResponse.StatusCode = 404;内部的操作方法。

public class CommonController : Controller
{
    [AllowAnonymous]
    public ActionResult PageNotFound()
    {
        Response.StatusCode = 404;
        Response.TrySkipIisCustomErrors = true;

        return View();
    }

    [AllowAnonymous]
    public ActionResult Error()
    {
        Response.StatusCode = 503;
        Response.TrySkipIisCustomErrors = true;

        return View();
    } 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP .Net页面无法显示错误

来自分类Dev

ASP.NET Web API自定义帮助页面

来自分类Dev

ASP.NET MVC自定义视图路由

来自分类Dev

ASP.NET MVC 5自定义错误页面

来自分类Dev

asp.net mvc自定义子路由

来自分类Dev

自定义的错误消息不会在ASP.NET MVC 4中转换

来自分类Dev

在ASP.NET MVC中托管后,静态HTML页面无法正常工作

来自分类Dev

分页在ASP.NET MVC 5中无法正常工作

来自分类Dev

自定义错误页面未显示在IIS7 ASP.NET上

来自分类Dev

Http错误404.13 ASP.NET Core MVC的自定义错误页面

来自分类Dev

在ASP.NET MVC中返回404时创建自定义错误

来自分类Dev

ASP.Net Core v3.1 MVC ajax表单中的自定义模型验证似乎无法正常工作

来自分类Dev

ASP.NET Core MVC Ajax无法正常工作

来自分类Dev

ASP.NET MVC自定义错误处理Application_Error Global.asax?

来自分类Dev

ASP.NET MVC 4自定义句柄错误

来自分类Dev

ASP.NET MVC循环似乎无法正常工作

来自分类Dev

asp.net自定义错误

来自分类Dev

ASP.NET MVC 2中的自定义403错误页面

来自分类Dev

TryUpdateModel Asp.Net MVC无法正常工作

来自分类Dev

ASP.Net Ajax页面方法和自定义http错误(Web窗体)

来自分类Dev

ASP.NET MVC中的自定义错误页面

来自分类Dev

C#asp.net MVC使用JSON进行自定义错误处理

来自分类Dev

asp.net自定义错误页面不起作用

来自分类Dev

无法正常工作SaveChanges()方法ASP.NET MVC

来自分类Dev

无法为ASP.NET中的自定义错误页面返回HTTP状态404

来自分类Dev

未经授权的Asp.net MVC访问自定义错误页面

来自分类Dev

ASP.NET MVC 4自定义404页面

来自分类Dev

ASP.NET MVC 5 自定义路由执行错误操作

来自分类Dev

ASP.NET MVC 自定义控制器不工作

Related 相关文章

热门标签

归档