ASP.NET Core MVC中的两种404错误( 六 )
接下来实现错误视图 , 我们在Views/Error文件夹中添加一个Error.cshtml文件 。
程序请求时发生了一个内部错误 , 我们会反馈给团队 , 我们正在努力解决这个问题 。 请通过ltm@ddxc.org与我们取得联系错误详情:异常路径:@ViewBag.ExceptionPath请注意 , 当前系统的环境变量需要为Production或者非Development 。
异常信息:@ViewBag.ExceptionMessage
异常堆栈跟踪:@ViewBag.StackTrace
运行项目 , 访问http://localhost:13380/Home/Details/2 , 效果如图19.11所示 。
文章插图
图19.11
我们能获取到完整的错误信息 , 异常的路径、信息以及堆栈中错误的具体内容 。
19.5.4 调整Edit()方法中的错误视图我们通过本机环境变量的配置 , 处理了404异常以及服务器内部报错的异常信息 , 两种触发方式的区别如下 。
如果读者现在访问http://localhost:13380/home/edit/300 , 会返回500异常错误 。 但是访问http://localhost:13380/Home/Details/300 , 会返回404异常错误 。 这是为什么呢?
原因是访问当前的Detail视图时 , 判断student为null时会主动跳转到StudentNotFound视图中 , 但是在Edit()方法中并没有返回 , 而是继续使用它的属性 , 引发Object为null的错误 , 因此会触发500错误信息 。
优化Edit()的代码如下 。
[HttpGet]public ViewResult Edit(int id){Student student = _studentRepository.GetStudentById(id);if(student == null){Response.StatusCode = 404;return View("StudentNotFound" , id);}StudentEditViewModel studentEditViewModel = new StudentEditViewModel{Id = student.Id ,Name = student.Name ,Email = student.Email ,Major = student.Major ,ExistingPhotoPath = student.PhotoPath};return View(studentEditViewModel);}而在Startup.cs中Configure的代码如下 。
public void Configure(IApplicationBuilder app , IWebHostEnvironment env){//如果环境是Development serve Developer Exception Pageif(env.IsDevelopment()){app.UseDeveloperExceptionPage();}//否则显示用户友好的错误页面else if(env.IsStaging() || env.IsProduction() || env.IsEnvironment("UAT")){app.UseExceptionHandler("/Error");app.UseStatusCodePagesWithReExecute("/Error/{0}");}//使用纯静态文件支持的中间件 , 而不使用带有终端的中间件app.UseStaticFiles();app.UseRouting();app.UseEndpoints(endpoints =>{endpoints.MapControllerRoute(name:"default" ,pattern:"{controller=Home}/{action=Index}/{id?}");});}19.6 小结本章我们为系统实现了用户友好的错误页面信息以及对全局异常的处理 , 讲解了为实现这些功能都提供了哪些中间件 , 以及中间件的特点和加载顺序 。 在接下来的章节中 , 我们将会实现将异常信息记录到文件中 , 这样便于开发人员分析这些错误信息 , 以优化系统 。
本文摘自《深入浅出 ASP.NET Core》
文章插图
本书是一本系统地介绍ASP.NET Core、Entity Framework Core以及ASP.NET Core Identity框架技术的入门图书 , 旨在帮助读者循序渐进地了解和掌握ASP.NET Core 。 本书使用ASP.NET Core从零开始搭建一个实际的项目 。 从基本的控制台应用程序开始 , 介绍ASP.NET Core基本的启动流程 , 涵盖ASP.NET Core框架中各个技术的实际应用 。 同时 , 本书也会介绍一些ASP.NET Core的高级概念 。 在本书中 , 我们会开发一个学校管理系统 , 其中包含清晰的操作步骤和大量的实际代码 , 以帮助读者学以致用 , 将ASP.NET Core的知识运用到实际的项目开发当中 , 最后我们会将开发的项目部署到生产环境中 。 通过阅读本书 , 读者将掌握使用ASP.NET Core开发Web应用程序的方法 , 并能够在对新项目进行技术选型时做出战略决策 。
本书适合有一定C# 编程经验和HTML、JavaScript基础 , 并对ASP.NET Core感兴趣的读者阅读 , 也可以作为高等院校相关专业的教学用书和培训学校的教材 。
- 对Spring MVC接口进行Mock测试
- 评估|微软新专利:用Quality Score评估会议质量
- SpringBoot工程下Spring MVC技术的应用
- 基于选项模式实现.NET Core的配置热更新
- TEQ|DEVIL TOYS 200% CORE TEQ 63 潮玩摆件
- 专攻难题:Rails、MVC及最常用的Rails命令
- NET|谷歌Cloud Functions上线微软.NET Core 3.1 添加支持VB和F#
- 谷歌Cloud Functions上线微软.NET Core 3.1 添加支持VB和F#
- SpringBootWeb源码解析SpringMVC自动配置
- 亲民首选---Anker Soundcore Life Note真无线蓝牙耳机
