当前位置:首页 > 生活百科

出现404错误页面怎么解决(服务器错误404解决方法)

栏目:生活百科日期:2025-04-09浏览:0

asp.net core mvc 对应着 .NET Framework 中的 ASP.NET MVC, 前者可以跨平台,可扩展,高性能,不过令人惊讶的是,虽然 ASP.NET Core 提供了大量的可选项可以完美的处理 404 错误,但 ASP.NET Core MVC 在默认情况下并没有选择它们,你说奇怪不?

这就造成了当请求一个不存在的页面时,应用程序将会返回一个 404 错误,ASP.NET Core MVC 目前会展示一个浏览器通用的错误页,如下图所示:

这篇文章我准备讨论 3种 方式来优雅的处理这种 404 错误。

接下来我会在 Visual Studio 2019 中创建一个 ASP.NET Core MVC 项目,用这个项目去展示如何处理 404 错误。

然后把 ASP.NET Core MVC 项目跑起来,你会看到应用程序默认的首页,上面还带一行 welcome 的欢迎语,如下图所示:

接下来我们尝试在浏览器中输入一个不存在的网址,比如说:
http://localhost:6440/welcome
, 这时候 ASP.NET Core MVC 引擎将会访问这个地址的资源,可想而知,引擎肯定会返回一个 404 错误,你也会看到如下错误页,通常情况下这是非常让人难堪的,对吧。

检查 ASP.NET Core MVC 的 Response.StatusCode

有几种方式可以比较完美的处理这种默认的 404 错误,一个简单的方案就是去检查 response 的 http 状态码,一旦发现这个 status = 404,你可以重定向到一个web 中存在的页面或者一个特定的错误页,下面的代码展示了,你可以在 Startup.Configure 方法中进行全局判断,一旦发现404错误就导向 home 页面。

    public class Startup    {        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)        {            app.Use(async (context, next) =&>            {                await next();                if (context.Response.StatusCode == 404)                {                    context.Request.Path = "/Home";                    await next();                }            });        }    }

接下来运行web程序,然后键入
http://localhost:6440/welcome
,你会发现最终展示了 home 页面。

下面是 Configure 方法的完整代码。

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)        {            if (env.IsDevelopment())            {                app.UseDeveloperExceptionPage();            }            else            {                app.UseExceptionHandler("/Home/Error");            }            app.Use(async (context, next) =&>            {                await next();                if (context.Response.StatusCode == 404)                {                    context.Request.Path = "/Home";                    await next();                }            });            app.UseStaticFiles();            app.UseRouting();            app.UseAuthorization();            app.UseEndpoints(endpoints =&>            {                endpoints.MapControllerRoute(                    name: "default",                    pattern: "{controller=Home}/{action=Index}/{id?}");            });        }

使用 UseStatusCodePages 中间件

第二种可选的解决方案是,采用 ASP.NET Core 中内置的 UseStatusCodePages 中间件,下面的代码展示了如何在 Startup.Configure 方法中去实现 StatusCodePages 。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)        {            app.UseStatusCodePages();            //Other code        }

现在你可以把程序跑起来然后浏览一下这个不存在的资源,下图展示了这种情况下的输出结果:

使用 UseStatusCodePagesWithReExecute 中间件

你可以利用
UseStatusCodePagesWithReExecute 中间件来处理 那种 Response 还没开始构建 就遇到的一些不成功的状态,有点绕哈,因此这个中间件不会处理 Response status 等于 404 的情况,当 404 发生的时候,这个中间件要做的就是将 request 重定向到另外一个 Action 去处理这个错误。

下面的代码展示了如何使用这个中间件将 request 重定向到另外一个 action 方法。

app.UseStatusCodePagesWithReExecute("/Home/HandleError/{0}");

然后再来看一下被重定向的 Action 方法。

&[Route("/Home/HandleError/{code:int}")]public IActionResult HandleError(int code){   ViewData&["ErrorMessage"] = $"Error occurred. The ErrorCode is: {code}";   return View("~/Views/Shared/HandleError.cshtml");}

现在我把展示错误信息的 HandleError 视图的创建留给你去实现吧!

最后,你可能想为一些错误码创建一些特定的view,比如说,你可以创建 Home/Error/500.cshtml 或者 Home/Error/404.cshtml 视图,然后根据 http status code 的值重定向到合适的错误页。

另外一种处理 404 错误的方式是使用一个自定义的页面,然后在页面上设置一些特定的错误代码,这样也方便隐藏一些比较重要的信息,比如将 404 改成 服务压力大,请联系管理员 等等,一旦应用程序发生错误,你可以将用户导向你设置的错误页,然后展示你设置的错误信息。

“出现404错误页面怎么解决(服务器错误404解决方法)” 的相关文章

2020户外登山包十大品牌(排名前十的户外登山包品牌)

近来户外活动盛行,专业的户外背包已经成为户外活动的必需品,像是常见的户外品牌就有TheNortheFace(北脸)、新潮的Fj?llr?ven(北极狐),Deu...

华为9e手机怎么样(详解华为畅享9e处理器相关问题)

针对千元以下市场,华为推出了主打高屏占比、震撼音质等特色功能的畅享9e,下面来看看它的综合表现如何吧。高屏占比+炫光背壳6.09英寸,高清珍珠屏,极窄的三个边框...

关闭页眉页脚怎么设置(1分钟教你关闭页眉页脚编辑状态)

页眉和页脚作为文档的辅助内容,在文档中的作用非常重要。页眉是指页边距的顶部区域,通常显示文档名、章节标题等信息。页脚是页边距的底部区域,通常用于显示文档页码。要...

sem工具哪款好(sem结构方程模型)

如果对DigitalMarketing有一点认识的话,相信都会听过SEM(SearchEngineMarketing)和SEO(SearchEngineOpti...

excel查重复数据公式(详解excel自动识别重复数据)

有时候在做销售工作的朋友需要统计一个销售员一天接待的客户人数,但是登记在excel表中的数据有重复的怎么快速统计?今天就跟大家分享的是按照多个条件进行统计不重复...

商城功能介绍,电子商城系统功能结构图

今天果酱神秘兮兮地跑来给我说,微信又更新了你不准备给大家说说???吓得我特别去看了一下微信的更新日志,但显示的内容还是两周前啊。而且这些更新内容世超之前都给大家...

夏天摆地摊卖什么比较好,卖这些可让你月入过万

&“地摊经济&”最近成为中国最热门的话题!基本上刷5分钟朋友圈就能看到十多回&”摆地摊&”。如果说你还没听说过这...

vs2010新建c++项目怎么运行(vs创建一个c项目的教程)

环境搭建步骤:·下载软件·安装软件·运行软件1下载软件在百度搜索visualstudio,选择如下图中的选项进入VisualStudio官网后,选择下载Wind...

公众号怎么弄好看的模板(微信公众号格式排版大全)

首先我们要搞清楚排版的方式有很多种,比如说简约式、卡片式以及还有其他的方式,那么我们如何选择适合自己的排版方式呢?事实上这是根据我们自己的风格来决定的,比如说我...

富士新相机发布xt4(全方面了解富士新相机xt4)

对于富士的一众粉丝来说,X-T4的正式上市让人兴奋不已,不少摄影爱好者也对这台新机有着浓厚的兴趣。那么,这台首发价11790元的APS-C画幅微单相机,究竟适合...