分享web开发知识

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

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

ASP.NET Core 如何实现404错误跳转到主页

发布时间:2023-09-06 02:07责任编辑:沈小雨关键词:.NET

假如用户在Web浏览器上敲错了URL,访问了ASP.NET Core站点下一个不存在的URL地址,那么默认情况下ASP.NET Core会返回给浏览器著名的404错误,那么有什么办法可以让ASP.NET Core返回404的Http状态码时,自动跳转到主页吗?

使用ASP.NET Core的中间件(Middleware)即可。

首先我们定义一个叫Jump404Middleware的中间件类,用于处理一旦ASP.NET Core的Pipeline返回404响应状态码,就跳转到网站主页:

public class Jump404Middleware{ ???private readonly RequestDelegate next; ???public Jump404Middleware(RequestDelegate next) ???{ ???????this.next = next; ???} ???public async Task Invoke( ???????Microsoft.AspNetCore.Http.HttpContext context) ???{ ???????await next.Invoke(context); ???????var response = context.Response; ???????//如果是404就跳转到主页 ???????if (response.StatusCode == 404) ???????{ ???????????response.Redirect("/"); ???????} ???}}

注意检测Response状态码(是否为404)和Redirect跳转的逻辑都是写在await next.Invoke(context)之后的。

然后定义一个Jump404Middleware中间件的扩展类Jump404MiddlewareExtension:

public static class Jump404MiddlewareExtension{ ???public static void UseJump404(this IApplicationBuilder app) ???{ ???????app.UseMiddleware<Jump404Middleware>(); ???}}

最后在ASP.NET Core中Startup类的Configure方法中使用Jump404Middleware中间件即可:

public void Configure(IApplicationBuilder app, IHostingEnvironment env){ ???if (env.IsDevelopment()) ???{ ???????app.UseDeveloperExceptionPage(); ???} ???else ???{ ???????app.UseExceptionHandler("/Home/Error"); ???} ???app.UseStaticFiles(); ???app.UseJump404(); ???app.UseCookiePolicy(); ???app.UseMvc(routes => ???{ ???????routes.MapRoute( ???????????name: "default", ???????????template: "{controller=Home}/{action=Index}/{id?}"); ???});}

这样当用户在Web浏览器上敲错了URL,访问了ASP.NET Core站点下一个不存在的URL地址时,ASP.NET Core就不会返回404错误了,而是将用户浏览器的URL地址跳转到网站主页上,避免了报错,其实现在很多大型网站(京东、淘宝等)都实现了这个功能。

ASP.NET Core 如何实现404错误跳转到主页

原文地址:https://www.cnblogs.com/OpenCoder/p/10011338.html

知识推荐

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