分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

MVC 实现自定义404错误页

发布时间:2023-09-06 01:23责任编辑:胡小海关键词:MVC

直接进入正题。

在HomeController中有一个NotFound的Action方法。

public ActionResult NotFound(){ ???return View();}
View Code

对应的视图

@{ ???Layout = null;}<!DOCTYPE html><html><head> ???<meta charset="utf-8" /> ???<meta name="viewport" content="width=device-width" /> ???<title>出错了</title></head><body> ???<div style="text-align:center;font-size:1.5em"> ????????为什么受伤的总是我 o(╥﹏╥)o ???</div></body></html>
View Code

在Global.asax.cs中定义的Application_Error方法,在方法中获取错误并判断是否是静态资源的404错误,如果不是,则使用自定义的错误页显示

private readonly string[] staticFileExt = new string[] { ".axd", ".ashx", ".bmp", ".css", ".gif", ".htm", ".html", ".ico", ".jpeg", ".jpg", ".js", ".png", ".rar", ".zip",".woff",".ttf" ,".eot",".svg"};
View Code
protected void Application_Error(){ ???var error = Server.GetLastError() as HttpException; ???if (error!= null && error.GetHttpCode() == 404) ???{ ???????if (!IsStaticResource(Request)) ???????{ ???????????Response.Clear(); ???????????Server.ClearError(); ???????????Response.TrySkipIisCustomErrors = true; ???????????IController controller = new HomeController(); ???????????var routeData = new RouteData(); ???????????routeData.Values.Add("controller", "Home"); ???????????routeData.Values.Add("action", "NotFound"); ???????????controller.Execute(new RequestContext(new HttpContextWrapper(Context), routeData)); ???????} ???}}private bool IsStaticResource(HttpRequest request){ ???string extension = VirtualPathUtility.GetExtension(request.Path); ???return staticFileExt.Contains(extension);}
View Code

当前台访问存在的页面或资源时:

当访问不存在的非静态资源时,显示自定义错误页

当访问不存在的静态资源时:

MVC 实现自定义404错误页

原文地址:http://www.cnblogs.com/godbell/p/7811979.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved