文章目录
-
-
- [1. 开发者异常页面](#1. 开发者异常页面)
-
- [(1)Startup.cs 页面的基础配置](#(1)Startup.cs 页面的基础配置)
- (2)自定义显示报错代码的前后XX行
- [2. MVC 的原理](#2. MVC 的原理)
- [3. MVC 的实现](#3. MVC 的实现)
- 4.默认路由路径
- 5.返回Json字符串
-
1. 开发者异常页面
(1)Startup.cs 页面的基础配置
csharp
namespace ASP.Net_Blank
{
public class Startup
{
private readonly IConfiguration _configuration;
public Startup(IConfiguration iconfiguration)
{
_configuration = iconfiguration;
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
// app.UseDeveloperExceptionPage() 这个调用需要在中间件使用之前调用,否者中间件运行过程中的报错可能无法显示出来。
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseFileServer();
app.UseStaticFiles();
app.Run(async (context) =>
{
throw new Exception("This is an Error");
await context.Response.WriteAsync("third MiddleWare");
});
}
}
}
如下红框中是核心添加的代码:
出错代码的具体位置:
如果请求的url包含参数的显示:
请求的Headers信息头:
(2)自定义显示报错代码的前后XX行
csharp
# Startup.cs 文件详情
namespace ASP.Net_Blank
{
public class Startup
{
private readonly IConfiguration _configuration;
public Startup(IConfiguration iconfiguration)
{
_configuration = iconfiguration;
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
if (env.IsDevelopment())
{
DeveloperExceptionPageOptions developerExceptionPageOptions = new DeveloperExceptionPageOptions();
developerExceptionPageOptions.SourceCodeLineCount = 3; // 设置代码报错行的前后3行显示出来
app.UseDeveloperExceptionPage(developerExceptionPageOptions);
}
app.UseFileServer();
app.UseStaticFiles();
app.Run(async (context) =>
{
throw new Exception("This is an Error");
await context.Response.WriteAsync("third MiddleWare");
});
}
}
}
2. MVC 的原理
- Model(模型): 包含一组数据的类和管理该数据的逻辑信息
- View(视图): 包含显示逻辑,用于显示Controller提供给它的模型中的数据
- Controller(控制器):处理Http请求,调用模型,选择一个视图来呈现该模型。
3. MVC 的实现
创建Controllers 文件夹并创建控制器(HomeController.cs):
HomeController.cs创建好之后,修改为返回string:
Startup.cs文件添加MVC 服务和调用该服务
最终的呈现结果:
4.默认路由路径
通过如上启动的页面,发现访问了http://localhost:5188/ 也到达了/home/index 路径下面的该显示的视图。通过追踪UseMvcWithDefaultRoute方法的源码,可以查看到。
- 该方法会默认进入到home这个controller(HomeController简称Home), 中的index这个方法中。(不区分大小写),最终返回如上结果。