我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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("<html lang=\"en\"><body>\r\n");            await context.Response.WriteAsync("ERROR!<br><br>\r\n");            var exceptionHandlerPathFeature =                 context.Features.Get<IExceptionHandlerPathFeature>();            // 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!<br><br>\r\n");            }            await context.Response.WriteAsync("<a href=\"/\">Home</a><br>\r\n");            await context.Response.WriteAsync("</body></html>\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?}");});

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

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

很显然当我们输入一个不存在地址之后就会打开一个处理错误的状态代码页。
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怎么处理错误环境

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

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

ASP.NET Core怎么处理404错误

这篇文章主要介绍“ASP.NET Core怎么处理404错误”,在日常操作中,相信很多人在ASP.NET Core怎么处理404错误问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP.NET Core怎么处
2023-06-30

ASP.NET Core中怎么使用多环境

本篇内容介绍了“ASP.NET Core中怎么使用多环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ASP.NET Core 支持在多个环
2023-06-30

ASP.NET Core中的环境怎么配置

这篇文章主要介绍了ASP.NET Core中的环境怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ASP.NET Core中的环境怎么配置文章都会有所收获,下面我们一起来看看吧。1.环境变量配置ASP.N
2023-06-29

如何在 Golang 并发环境中处理错误?

在 go 并发环境中处理错误的有效方法包括:异常处理(panic/recover): 适用于处理意外错误,通过 panic 引发异常,再用 recover 捕获。错误通道: 用来将并发 goroutine 中的错误传给主 goroutine
如何在 Golang 并发环境中处理错误?
2024-05-14

ASP.NET Core中怎么利用 Razor处理Ajax请求

这篇文章将为大家详细讲解有关ASP.NET Core中怎么利用 Razor处理Ajax请求,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。RazorRazor Pages是ASP.NET Co
2023-06-19

pycharm环境配置错误怎么改正

解决pycharm环境配置错误的步骤:检查python解释器路径是否正确配置。安装必要的python库。检查环境变量中是否包含python解释器和库路径。重新加载项目以应用更改。更新pycharm至最新版本。如果以上方法无效,重置pycha
pycharm环境配置错误怎么改正
2024-04-24

C++ 函数异常与多线程:并发环境下的错误处理

c++++ 中函数异常处理对于多线程环境尤为重要,以确保线程安全和数据完整性。通过 try-catch 语句,可以在出现异常时捕获和处理特定类型的异常,以防止程序崩溃或数据损坏。C++ 函数异常与多线程:并发环境下的错误处理在多线程环境中
C++ 函数异常与多线程:并发环境下的错误处理
2024-05-04

Rust是怎么处理错误的

本文小编为大家详细介绍“Rust是怎么处理错误的”,内容详细,步骤清晰,细节处理妥当,希望这篇“Rust是怎么处理错误的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。异常的演进程序在运行的过程中,总是会不可避免地
2023-07-04

ADO操作错误怎么处理

这篇文章主要讲解了“ADO操作错误怎么处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO操作错误怎么处理”吧!使用 Number 属性确定发生了哪个错误。ADO操作属性的值是与错误条件
2023-06-17

怎么处理Docker错误消息

这篇文章主要讲解了“怎么处理Docker错误消息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么处理Docker错误消息”吧!本地安装Kubernetes时,遇到如下的错误消息:plead
2023-06-02

阿里云服务器环境配置错误怎么解决

仔细检查代码:检查代码中是否存在潜在的漏洞,例如弱口令、权限控制等。可以使用IDE的配置工具来帮助检查这些问题。检查环境:检查您的环境,确保您的代码和环境符合阿里云服务器的要求。例如,您的代码是否受到了已知的漏洞的影响,您的环境是否被恶意攻击者入侵等等。使用阿里云安全组:使用阿里云安全组,您可以得到更全面的安全控制和支持。安全组可以帮助您检测和防止潜在的攻击。更新服务器软件:更新您的服务器软件,例...
2023-10-27

c++运行时错误怎么处理

处理 C++ 运行时错误的一般方法包括:1. 异常处理:使用 try-catch 块来捕获可能抛出的异常,并在 catch 块中处理异常。可以使用标准异常类(如 std::exception)来捕获和处理常见的错误,也可以自定义异常类来处理
2023-10-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录