首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自定义ASP.NET MVC 404错误页面的路由

在ASP.NET MVC中,自定义404错误页面的路由可以通过以下步骤实现:

  1. 创建自定义的404错误页面。在项目的Views/Shared文件夹中创建一个名为Error.cshtml的视图文件,并添加以下代码:
代码语言:txt
复制
@{
    ViewBag.Title = "Error";
}

<h2>404 - 页面未找到</h2>
  1. 在Global.asax文件中添加以下代码:
代码语言:csharp
复制
protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    HttpException httpException = exception as HttpException;

    if (httpException != null && httpException.GetHttpCode() == 404)
    {
        Server.ClearError();
        Response.Clear();
        Response.StatusCode = 404;
        Response.TrySkipIisCustomErrors = true;

        HttpContext.Current.RewritePath(Request.ApplicationPath + "/Error");
        IController errorController = new ErrorController();
        errorController.Execute(new RequestContext(new HttpContextWrapper(Context), new RouteData()));
    }
}

这段代码会捕获404错误,并将请求重定向到Error控制器。

  1. 创建Error控制器。在项目中创建一个名为ErrorController的控制器,并添加以下代码:
代码语言:csharp
复制
public class ErrorController : Controller
{
    public ActionResult Index()
    {
        return View("Error");
    }
}

这段代码会将请求重定向到Error视图。

  1. 在Web.config文件中添加以下代码:
代码语言:xml<system.webServer>
复制
  <httpErrors errorMode="Custom" existingResponse="Replace">
   <remove statusCode="404" />
   <error statusCode="404" responseMode="ExecuteURL" path="/Error" />
  </httpErrors>
</system.webServer>

这段代码会将404错误重定向到Error控制器。

现在,当用户访问不存在的页面时,将会看到自定义的404错误页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

asp.net mvc4中自定义404

定义 404 方法当然有很多种。不同的方法所展现的形式也不一样,用户所体验也不一样。.../Error"); } } 注意事项: 在开发时候,我们经常会在 Global.asax 中的 Application_Error 方法中使用 Response.Redirect 方法跳转到自定义错误...,但有时候(特别是当站点部署到 IIS 后)Application_Error 方法中使用 Response.Redirect 方法会失效,当发生异常错误后还是显示的默认错误黄页。...其根本原因是尽管我们在 Application_Error 方法中使用了 Response.Redirect 方法,但是当系统发生异常错误Asp.Net 认为异常并没有被处理,所以不会跳转到 Application_Error...,这样再调用 Response.Redirect 方法系统就会跳转到自定义错误页面了。

53820
  • Django 自定义404 500等错误面的实现

    要想自定义错误页面,需要关闭调试模式DEBUG = False ,因为调试模式的错误页面是开发下会显示错误信息的。 有两种方法可以实现自定义错误页面。...总的来说,方法一不需要设路由,只要新建规定名称的模板就能生效了。...= [ ... ] 除了能捕获不存在路由地址,还能捕获视图中raise Http404(‘message’) 抛出的异常。...哪些错误页面可以配置 具体能自定义错误面的有 4 中状态码: # django.views.defaults.py ERROR_404_TEMPLATE_NAME = '404.html' ERROR...handler500 = defaults.server_error 到此这篇关于Django 自定义404 500等错误面的实现的文章就介绍到这了,更多相关Django自定义404 500错误页面内容请搜索

    1.4K20

    详解ASP.NET Core 处理 404 Not Found

    解决方案 在以前的ASP.NET MVC版本中,主要在 web.config 中处理404错误的。...您可能记得在 <customErrors 节点中配置ASP.NET管道处理404错误,以及在低版本的IIS中通过 <httpErrors 节点处理 404错误。好像有点混乱。...,现在来看看通用的404错误,我们无法弄清楚用户想要查看的内容。...通配路由 在先前版本的MVC,创建一个通配符路由来处理,在.NET Core中,也可以使用相同的方式。这个方式是,您有一个通配符路由,它会接收任何其它路由尚未处理的URL。...例如,如果您正在使用上一节所示的请求限制,那么您可以返回一个解释为什么请求失败的429面。 总结 处理404面的具体问题最好用自定义视图来处理,并设置状态代码(直接或通过自定义操作结果)。

    1.9K20

    ASP.NET MVC编程——错误处理与日记

    ASP.NET MVC错误处理应考虑到这几个方面:模型绑定期间发生的错误,未能路由到指定操作,针对控制器的错误处理。...,也无法处理404错误,即使将错误过滤器注册为全局过滤器也是如此。...--其他配置--> Mode:处理模式,有三种处理模式 On,启用自定义处理功能,当错误发生时显示自定义错误 Off,关闭自定义错误处理功能,当错误发生时显示默认的错误。...RemoteOnly,启用自定义错误处理功能,但只针对来自远程机器的请求有效。 defaultRedirect:发生错误时,显示指定错误。 :根据状态码显示指定的错误。...Scott Allen,孙远帅/邹权译  ASP.NET MVC4 高级编程(第四版) 3.黄保翕,ASP.NET MVC4开发指南 4.蒋金楠,ASP.NET MVC4框架揭秘 5.https://www.asp.net

    1.5K60

    asp.net mvc 的异常处理解决方案

    web form上微软提供了一个工具包,关于这个工具包参看推荐一个工具包自定义HTTP 404错误。如何在asp.net mvc上实现这样的功能呢?...asp.net mvc 在创建项目的时候在Views的Shared目录下有一个错误处理Error.aspx视图,这个默认的错误处理功能没有实现对错误日志的记录。...捕获所有的服务端异常包括HttpExeptions例如404错误,并且自定义错误处理的视图,同时将错误记录到数据库,发送给相关人员,综合下面两篇blog: Real world error hadnling....aspx ELMAH with ASP.NET MVC: http://darrell.mozingo.net/2009/02/19/elmah-with-aspnet-mvc/ 将这两文章的内容整合...,就可以得到asp.net mvc的异常处理方面的一个相对全面的解决方案。

    86290

    web.config的customErrors与httpErrors的区别

    之前一直知道设置web.config(其实就是xml文件)的customErrors的error来指向自定义错误的URL,但是今天在调试的时候发现customErrors无法跳转到自定义的页面,在网上找了半天才了解还有...httpErrors可以设置跳转自定义错误。...> 简单来说,存取静态档案(如.js、.html、.css、.jpg…)发生错误会依照httpErrors设定办事; 由.NET处理程序接手的URL(例如:.aspx、.ashx、.svc、MVC注册路由...以Windows 2008 R2 IIS 7.5為例,網站管理介面有兩處可以自訂錯誤頁面,上方的ASP.NET區的.NET Error Pages與下方IIS區的Error Pages: 兩個設定介面有點不同...簡單來說,存取靜態檔案(如.js、.html、.css、.jpg…)發生錯誤會依照httpErrors設定辦事;由.NET處理程序接手的URL(例如:.aspx、.ashx、.svc、MVC註冊路由),

    80420

    NetCore实现404和500状态码自定义处理页面

    使用NerCore开发框架过程中需要对404,500等状态码进行友好提示页面处理,参照asp.net mvc并没有发现提供Application_Error和Application_BeginRequest...,这样我们就可以获取到Request和Response针对跳转进行处理,我们在Startup的Configure方法中加入如下代码,在404的情况同时可以处理访问项目时的默认路由跳转,例如访问http:...//localhost:4099/fastcloud时不加入具体主页面路由,则context.Request.Path为空,可以跳转我们默认制定的主页, //自定义404...home/error/500"; } }); 需要注意的是,如果在项目中加入的全局异常拦截器,则需要判断如果是页面请求,才会跳转至自定义...500面,Ajax请求返回错误的Json串,具体代码和效果如下 public class GlobalExceptionFilter : IExceptionFilter {

    34930

    ASP.NET Core 错误处理(Handle Errors)

    - 依赖注入》 《理解 ASP.NET Core - 文件服务器(File Server)》 使用中间件进行错误处理 开发人员异常 开发人员异常用于显示未处理的请求异常的详细信息。...异常处理程序 除了使用lambda外,我们还可以指定一个路径,指向一个备用管道进行异常处理,这个备用管道对于MVC来说,一般是Controller中的Action,例如MVC模板默认的/Home/Error...可是,为了良好的用户体验,一般我们会对常见的错误状态码(404)提供友好的页面,如gitee404 请注意,本节所涉及到的中间件与上两节所讲解的错误异常处理中间件不冲突,可以同时使用。...面 StatusCodes.Status404NotFound => View("404"), // 跳转到统一展示页面 _ =...使用过滤器进行错误处理 除了错误处理中间件外,ASP.NET Core 还提供了异常过滤器,用于错误处理。

    2K20

    【对比学习】koa.js、Gin与asp.net core——中间件

    { console.log(ctx.url) } }) //3.匹配下面的路由 router.get('/news',async(ctx)=>{ console.log...("this is news") ctx.body="这是一个新闻页面" }) 第三方中间件 静态资源中间件为例:静态资源地址没有路由匹配,盲目引入静态资源,会报404....koa和gin中路由匹配就是map这种,当不使用内置的mvc模板路由,我姑且称它为自定义路由 public class Startup { private static void HandleMapTest1...报告应用运行时错误 app.UseDeveloperExceptionPage(); //数据库错误中间件报告数据库运行时错误 app.UseDatabaseErrorPage...在asp.net core之前,还是asp.net的时候,也有类似的AOP实现,去继承各种FilterAttribute ,重写方法,如启用属性路由,创建自定义授权过滤器,创建自定义身份验证过滤器,模型验证过滤器

    78620

    Asp.net MVC 之 Contorllers(二)

    如果匹配到,请求将转到 ASP.NET MVC 的领地,再调用一个控制器类进行处理。如果没有匹配到,请求将被标准的 ASP.NET 运行时以最合适的方式处理,很可能的结果就是返回一个404。...通过指定动作行为和资源可以自定义语法,在 ASP.NET MVC 中默认行为是使用自定义语法的 URLs。该语法是以 URL 模式的集合作为表现形式,也称为路由。...MVC 框架并没有提供很多内置的路由处理程序,而这可能是一个需要使用自定义的并非公用的路由处理程序的签名。...会在后面的章节说自定义路由处理程序时,并提供一个例子。 处理物理文件请求 路由系统是否具有处理匹配物理文件的请求,是有助于建立一个成功的URL到路由匹配的路由系统的另一个配置方面。...例如,将前面的代码添加到一个 ASP.NET MVC 应用程序的 Global.asax.cs 文件,然后运行,当访问default.aspx页面时,会出现一个 HTTP 404 错误

    1.9K60

    ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

    这里,对于路由规则需要注意的有两点:   (1)可以有多条路由规则;   (2)路由规则是有顺序的(前面的规则被匹配后,后面的规则就不再匹配);   我们可以在RegisterRoutes这个方法中添加一条自定义路由规则...由于网站中,并没有Home-Index这个Controller,所以也就出现了刚刚那个404面。...不可以重名,否则会发生错误: “路由集合中已经存在名为“Default”的路由路由名必须是唯一的”。   ...3.5 URL路由调试   在ASP.Net MVC中,默认是不允许对路由规则进行调试的。但是,我们可以通过使用RouteDebug来辅助进行调试。   ...,也就是将Home-Index作为Controller的名称进行匹配,这也就证明了为什么我们输入这个请求不会匹配第二条Default2的路由规则出现刚刚那个404面了。

    1.8K30

    ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    (2)开发方式   • 服务器端控件   • 一般处理程序+Html静态+Ajax   • 一般处理程序+Html模板引擎 1.2 ASP.Net MVC的开发模式 ?   ...,更易于敏捷开发与测试驱动开发,有很强的可扩展性;      2.因为没有服务器端控件,所以程序员控制的会更加灵活,页面更加干净,没有ViewState;      3.通过修改路由规则,可以控制生成自定义的...目录下   (2)不同控制器的视图用文件夹进行分割,每个控制器都对应一个视图目录   (3)一般视图名字跟控制器的Action相对应(非必须)   (4)多个控制器公共的视图放到Shared:例如公用的错误...所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC路由规则默认又是什么,在哪里设置的呢?...如果我们想要改变默认的路由规则,例如我们想要以这种URL:http://localhost/Home-Index-1来访问项目,则直接将上面的默认路由规则改为:{controller}-{action}

    2K30

    asp.net core 3 高级编程(第8版)》学习笔记 01

    第二章 入门第二章通过一个最简单的例子,了解创建和 asp.net core 程序的过程,以及熟悉一下路由。...asp.net core练手小项目(01) - 从 mvc 开始_stone0823的博客-CSDN博客_asp.net core 项目观察 asp.net core MVC 的要点创建一个 asp.net...如果使用 mvc 框架,首先修改 Startup.cs,一共有两处修改:第一处修改可以理解为 将 MVC 服务添加到 IServiceCollection图片第二处修改是定义默认的路由规则:图片**路由...** (routing) 用于决定如何处理请求的规则,上面的代码创建并启动一个**默认规则**。...控制器 (Controller) 下面的每一个方法都被称为 Action 方法。此时如何运行项目,因为没有定义 Controller,所以路由机制无法运行,程序返回 404 错误

    48940

    ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    (2)开发方式   • 服务器端控件   • 一般处理程序+Html静态+Ajax   • 一般处理程序+Html模板引擎 1.2 ASP.Net MVC的开发模式   (1...,更易于敏捷开发与测试驱动开发,有很强的可扩展性;      2.因为没有服务器端控件,所以程序员控制的会更加灵活,页面更加干净,没有ViewState;      3.通过修改路由规则,可以控制生成自定义的...不同控制器的视图用文件夹进行分割, 每个控制器都对应一个视图目录   (3)一般视图名字跟控制器的Action相对应(非必须)   (4)多个控制器 公共的视图放到Shared:例如公用的错误...所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC路由规则默认又是什么,在哪里设置的呢?...如果我们想要改变默认的路由规则,例如我们想要以这种URL:http://localhost/Home-Index-1来访问项目,则直接将上面的默认路由规则改为:{controller}-{action}

    89220
    领券