侧边栏壁纸
  • 累计撰写 12 篇文章
  • 累计创建 7 个标签
  • 累计收到 1 条评论

ASP.NET Core中的开发人员异常页面-ASP.NET Core学习(4)

黎源
2022-03-25 / 0 评论 / 0 点赞 / 1,273 阅读 / 1,784 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

UseDeveloperExceptionPage中间件

StartUp.cs中的Configure方法使用以下代码

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

            FileServerOptions fileServerOptions = new FileServerOptions();
            fileServerOptions.DefaultFilesOptions.DefaultFileNames.Clear();
            fileServerOptions.DefaultFilesOptions.DefaultFileNames.Add("First.html");
            app.UseFileServer(fileServerOptions);

            app.Run(async (context) => {
                throw new Exception("粗错啦!");
                await context.Response.WriteAsync(DateTime.Now.ToString("ffff") + "Final Op");
            });

运行项目,项目会显示默认的First.html页面,因为请求走到UseFileServer中间件后进行了处理并反向传递,没有进入到Run方法中,这个时候,我们可以发出http://localhost:64984/123的请求,项目就会显示异常页面了,如图所示!
image.png
开发人员异常页面包含了很多信息,包括堆栈、请求参数、cookie等

自定义UseDeveloperExceptionPage中间件

如同前面学习的UseDefaultFiles等中间件一样,UseDeveloperExceptionPage也是可以自定义的,

                DeveloperExceptionPageOptions developerExceptionPageOptions = 
                new DeveloperExceptionPageOptions
                {
	            //表示显示异常代码的上方和下方代码的行数
                    SourceCodeLineCount = 3
                };

                app.UseDeveloperExceptionPage(developerExceptionPageOptions);

由于UseDeveloperExceptionPage中间件需要尽可能多的捕获异常,所以在管道中要尽可能早的进行配置,防止在进入异常页面中间件之前就出现异常,导致无法进行捕获的情况。

ASP.NET Core中的环境变量配置

ASP.NET Core中环境变量有以下几种

  1. 开发环境(Development)
  2. 演示环境(Staging)
  3. 生产环境(Production)

开发环境

此环境用于开发人员日常的开发工作中,为了便于调试,需要显示完整的错误异常页面

演示环境

模拟生产环境的一个配置,主要的目的是找到与部署相关的问题,通常在演示环境,不会进行项目的调试,异常的信息也不需要进行显示

生产环境

用于日常业务的实际环境,出现异常时会显示友好的提示页面,而不是异常详情页面

配置 ASP.NET Core中的环境变量

两种方式可以用于配置

  1. launchSettings.json文件中
  2. 在windows系统下的环境变量中

ASP.NET Core提供了开箱即用的IWebHostEnvironment服务用于访问环境变量。

env.IsDevelopment()             //是否开发环境
env.IsProduction()              //是否生产环境
env.IsStaging()                 //是否演示环境
env.IsEnvironment("自定义环境")  //是否自定义环境

env.EnvironmentName		// 环境变量名称
env.ApplicationName		// 项目名称
env.ContentRootPath		// 应用程序内容文件的目录的路径
env.WebRootPath			// 应用程序内容文件的目录的路径

注意点

  1. 项目运行时会读取windows系统下的环境变量和launchSettings.json文件中的环境变量,如果两者不一致,项目会采取launchSettings.json文件中环境变量的值
  2. 如果没有指定环境变量的值,系统会默认采用Production(为了安全)。
0
博主关闭了所有页面的评论