如何解决404错误页面_服务器错误404解决方案

Դ澎湃新闻

ߣ优化

13

2021-11-08 13:32:25

Asp.net核心最有价值球员对应ASP.NET最有价值球员。NET框架。前者是跨平台、可扩展、高性能的。令人惊讶的是,尽管ASP.NET核心提供了大量选项来完美处理404个错误,但ASP.NET核心MVC在默认情况下并没有选择它们。你惊讶吗?

这导致应用程序在请求不存在的页面时返回404错误,ASP.NET CORE MVC当前显示一个浏览器特定的错误页面,如下图所示:

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

在本文中,我将讨论三种优雅地处理这个404错误的方法。

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

然后运行ASP.NET CORE MVC项目,您将看到应用程序的默认主页,并显示欢迎消息,如下图所示:

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

接下来,我们尝试在浏览器中输入一个不存在的URL,例如:

3358 localhost :6440/欢迎。此时,ASP.NET核心MVC引擎将访问该地址的资源。可以想象,引擎肯定会返回一个404错误。你还会看到下面的错误页面,这通常是非常尴尬的,对吗?

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

检查 ASP.NET Core MVC 的 Response.StatusCode

有几种方法可以完美地处理这个默认的404错误。一个简单的方案是检查响应的http状态代码。找到此状态=404后,您可以重定向到网页或特定的错误页面。下面的代码显示,您可以在启动中进行全局判断。配置方法,一旦发现404错误,您将被引导到主页。

公共类启动

{

公共空间配置(IWebHostEnvironment env)

{

app。使用(异步(上下文,下一个)=

{

等待下一个();

if(上下文。响应。状态代码==404)

{

语境。请求。路径='/Home ';

等待下一个();

}

});

}

}

接下来,运行web程序,然后键入

3358 localhost :6440/欢迎,你会发现主页终于显示出来了。

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

公共空间配置(IWebHostEnvironment env)

{

if (env。IsDevelopment())

{

app。usedeveloper exception page();

}

其他

{

app。UseExceptionHandler('/Home/Error ');

}

app。使用(异步(上下文,下一个)=

{

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
        }

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

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

使用 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 改成 服务压力大,请联系管理员 等等,一旦应用程序发生错误,你可以将用户导向你设置的错误页,然后展示你设置的错误信息。

佭ϴý Ѷ Media8ý

在线客服

外链咨询

扫码加我微信

微信:juxia_com

返回顶部