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的请求,项目就会显示异常页面了,如图所示!
开发人员异常页面包含了很多信息,包括堆栈、请求参数、cookie等
自定义UseDeveloperExceptionPage中间件
如同前面学习的UseDefaultFiles等中间件一样,UseDeveloperExceptionPage也是可以自定义的,
DeveloperExceptionPageOptions developerExceptionPageOptions =
new DeveloperExceptionPageOptions
{
//表示显示异常代码的上方和下方代码的行数
SourceCodeLineCount = 3
};
app.UseDeveloperExceptionPage(developerExceptionPageOptions);
由于UseDeveloperExceptionPage中间件需要尽可能多的捕获异常,所以在管道中要尽可能早的进行配置,防止在进入异常页面中间件之前就出现异常,导致无法进行捕获的情况。
ASP.NET Core中的环境变量配置
ASP.NET Core中环境变量有以下几种
- 开发环境(Development)
- 演示环境(Staging)
- 生产环境(Production)
开发环境
此环境用于开发人员日常的开发工作中,为了便于调试,需要显示完整的错误异常页面
演示环境
模拟生产环境的一个配置,主要的目的是找到与部署相关的问题,通常在演示环境,不会进行项目的调试,异常的信息也不需要进行显示
生产环境
用于日常业务的实际环境,出现异常时会显示友好的提示页面,而不是异常详情页面
配置 ASP.NET Core中的环境变量
两种方式可以用于配置
- 在launchSettings.json文件中
- 在windows系统下的环境变量中
ASP.NET Core提供了开箱即用的IWebHostEnvironment服务用于访问环境变量。
env.IsDevelopment() //是否开发环境
env.IsProduction() //是否生产环境
env.IsStaging() //是否演示环境
env.IsEnvironment("自定义环境") //是否自定义环境
env.EnvironmentName // 环境变量名称
env.ApplicationName // 项目名称
env.ContentRootPath // 应用程序内容文件的目录的路径
env.WebRootPath // 应用程序内容文件的目录的路径
注意点
- 项目运行时会读取windows系统下的环境变量和launchSettings.json文件中的环境变量,如果两者不一致,项目会采取launchSettings.json文件中环境变量的值
- 如果没有指定环境变量的值,系统会默认采用Production(为了安全)。