千家信息网

ASP.NET Core怎么处理错误环境

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"ASP.NET Core怎么处理错误环境"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"ASP.NET Core怎么处理错误环境"文章能帮助大
千家信息网最后更新 2026年11月02日ASP.NET Core怎么处理错误环境

这篇文章主要介绍"ASP.NET Core怎么处理错误环境"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"ASP.NET Core怎么处理错误环境"文章能帮助大家解决问题。

1.前言

ASP.NET Core处理错误环境区分为两种:开发环境和非开发环境。

  • 开发环境:开发人员异常页。

  • 非开发环境:异常处理程序页、状态代码页。

在Startup.Configure方法里面我们会看到如下代码:

public void Configure(IApplicationBuilder app, IHostingEnvironment env){    if (env.IsDevelopment())    {       //开发环境    }     else    {       //非开发环境    }}

env.IsDevelopment()是判断应用程序运行是在开发环境还是非开发环境,具体配置在Properties/launchSettings.json,找到ASPNETCORE_ENVIRONMENT属性,默认值是开发环境(Development),具体环境配置知识点后面我们再来学习下。

2.开发人员异常页

向Startup.Configure方法添加代码,以当应用在开发环境中运行时启用此页:

if (env.IsDevelopment()){    app.UseDeveloperExceptionPage();}

开发人员异常页仅当应用程序在开发环境中运行时才会启用,而且调用UseDeveloperExceptionPage要配置于任何要捕获其异常的中间件前面。
该页包括关于异常和请求的以下信息:

  • 堆栈跟踪

  • 查询字符串参数(如果有)

  • Cookie(如果有)

  • request header

3.异常处理程序页

在下面的示例中,UseExceptionHandler 在非开发环境中添加异常处理中间件:

if (env.IsDevelopment()){    app.UseDeveloperExceptionPage();}else{    app.UseExceptionHandler("/Error");    app.UseHsts();}

Razor Pages应用模板提供"页面"文件夹中的Error页(.cshtml)和PageModel类(ErrorModel)。 对于MVC应用,项目模板包括Error操作方法和Error视图。操作方法如下:

[AllowAnonymous][ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]public IActionResult Error(){    return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });}

不要使用HTTP方法属性(如HttpGet)修饰错误处理程序操作方法,因为会阻止某些请求访问的方法。同时最好允许匿名访问方法,以便未经身份验证的用户能够接收错误视图。
UseExceptionHandler中间还可以使用lambda进行异常处理:

if (env.IsDevelopment()){    app.UseDeveloperExceptionPage();}else{   app.UseExceptionHandler(errorApp =>   {        errorApp.Run(async context =>        {            context.Response.StatusCode = 500;            context.Response.ContentType = "text/html";            await context.Response.WriteAsync("\r\n");            await context.Response.WriteAsync("ERROR!

\r\n"); var exceptionHandlerPathFeature = context.Features.Get(); // Use exceptionHandlerPathFeature to process the exception (for example, // logging), but do NOT expose sensitive error information directly to // the client. if (exceptionHandlerPathFeature?.Error is FileNotFoundException) { await context.Response.WriteAsync("File error thrown!

\r\n"); } await context.Response.WriteAsync("Home
\r\n"); await context.Response.WriteAsync("\r\n"); await context.Response.WriteAsync(new string(' ', 512)); // IE padding }); });app.UseHsts();}

4.状态代码页

一般情况下,ASP.NET Core应用程序不会为HTTP状态代码(如"404-未找到")提供状态代码页的。但若要提供状态代码页,可以使用状态代码页中间件。

4.1 UseStatusCodePages中间件

若要启用常见错误状态代码的默认纯文本处理程序,请在Startup.Configure方法中调用 UseStatusCodePages:

app.UseStatusCodePages();

而这里有一点要注意的是,调用UseStatusCodePages中间件要在例如静态文件中间件和 MVC中间件等中间件前面调用:

app.UseStatusCodePages();app.UseStaticFiles();app.UseMvc(routes =>{    routes.MapRoute(        name: "default",        template: "{controller=Home}/{action=Index}/{id?}");});

下面通过运行应用程序在浏览器地址栏上输入一个不存在地址看看配置该中间件后的效果:

很显然当我们输入一个不存在地址之后就会打开一个处理错误的状态代码页。
UseStatusCodePages中间件还有两种重载使用方法,具体运行效果就不一一截图了,大家自行测试。

  • 包含格式字符串的 UseStatusCodePages:

app.UseStatusCodePages("text/plain", "Status code page, status code: {0}");
  • 包含lambda的UseStatusCodePages:

app.UseStatusCodePages(async context =>{    context.HttpContext.Response.ContentType = "text/plain";    await context.HttpContext.Response.WriteAsync(        "Status code page, status code: " +        context.HttpContext.Response.StatusCode);});

4.2 UseStatusCodePagesWithRedirect中间件

  • 向客户端发送"302 - 已找到"状态代码。

  • 将客户端重定向到URL模板中的位置。

下面我们在Startup.Configure方法中调用UseStatusCodePagesWithRedirect:

app.UseStatusCodePagesWithRedirects("/Error/{0}");

运行应用程序在浏览器上输入不存在地址https://localhost:44353/1看看配置该中间件后的效果,你会发觉当我们输入上述地址后会跳转到https://localhost:44353/Error/404链接去了,并显示:

这就说明白当我们输入一个不存在地址之后会重定向中间件设置的地址页面去了。

关于"ASP.NET Core怎么处理错误环境"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

环境 开发 中间件 方法 处理 代码 状态 程序 错误 应用 地址 应用程序 输入 配置 知识 运行 人员 效果 模板 字符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 博彦科技互联网金融 中国互联网科技工作委员会毛军 银优互联网科技有限公司 互联网女皇 腾讯科技 猫创互联网科技 无锡溥仪互联网科技有限公司 佩信高科技互联网 互联网科技公司招聘 以后互联网后是啥科技 移动互联网科技股 互联网企业和科技型企业 新兴科技互联网创新大赛颁奖典礼 洛阳共同富裕互联网科技有限公司 朱啸虎曾投资哪些互联网科技企业 世界互联网领先科技成果获奖 半导体是互联网高科技吗 南京一网一红互联网科技有限公司 萌小萌互联网科技河南有限公司 银川新华互联网科技学校招聘 互联网 科技节活动 微视频大赛 互联网科技 互联网与科技发展 善班互联网科技有限公司 互联网金融科技委员会 江苏南京365互联网科技 福建科技产业互联网发展 苏州五指互联网络科技有限 千方科技属于互联网企业吗 互联网科技如何创业 青岛易易互联网科技
0