.Net Core基础原理(下)

六、请求处理管道

本章重点:什么是请求处理管道

Startup中的Configure()方法:配置应用程序的请求处理管道。

管道会在每一个请求上执行------》执行顺序取决于定义中间件的顺序。

6.1 app.Use()

需要传入2个参数:

HttpContext对象,访问http请求和响应

一个通用的委托,可以处理请求or调用请求管道中的下一个中间件

6.2 自定义中间件,验证中间件之间的调用关系

提取中间件调用逻辑如下:


七、webroot

7.1 什么是webroot

wwwroot,又称webroot,是项目目录下一个文件夹。

默认情况下,所有的静态文件都可以存储在该文件夹下,并可通过该文件夹的相对路径来进行访问。

PS.基于 空模板 创建的 ASP.Net Core Web应用程序 中没有这个文件夹,需使用Web应用程序模板 重新创建一个项目。

新项目目录如下:

创建空模板项目时,可参考上述目录自行创建。

7.2 创建自定义wwwroot文件夹,添加配置

现在回到一直使用的空模板程序:.NetCoreDemo,参考上面的目录,自定义一个wwwroot文件夹。

------》wwwroot文件夹支持自定义名称(比如命名为:myroot)。之后在Program.cs中添加配置即可

但是!只在Program.cs中配置,程序编译后依然无法通过地址栏访问文件夹中资源------

为什么呢?

因为空模板创建的Web应用程序中默认没有wwwroot文件夹,也没配置wwwroot相关的功能,无法读取该文件夹下的资源。

若想使用静态资源,需要自己在startup中添加配置:

添加配置之后,即可通过地址栏访问:

7.3 如何设置默认页面

在配置好app.UseStaticFiles();,即可以使用静态资源的基础上,可以通过两种方式设定程序的默认页面。

(1)设置默认页面:app.UseDefaultFiles();

使用该方法后,系统会自动设置默认页面:系统会按照来名称识别,识别顺序:index.htm------》index.html------》default.htm------》default.html

如果以上四个都找不到,视为没有默认,不会输出。

(2)设置自定义页为默认页面:app.UseDefaultFiles(options)

(3)设置自定义页为默认页面

------一种集成了配置①和配置②的功能的方法:app.UseFileServer(sOptions);


八、异常中间件

8.1 系统默认注册的异常中间件

假如手动设置抛出一个异常:

未注册异常中间件,页面显示------

如红框标注,页面报错 500。

注册异常中间件后页面显示------

通过红框标注的五个选项卡,可以查看到具体的异常信息:

8.2 如何自定义配置异常中间件

在Startup.cs------Configure()方法中,使用DeveloperExceptionPageOptions类:

编译后页面显示------


九、.NET CLI命令行工具

一个跨平台开发工具,用于创建、启动、还原、构建、发布ASP .Net应用程序,适用于任何类型的Web应用程序

PS: 使用cli运行程序,属于进程外托管(即使用kestrel+iis服务器 )

9.1 验证是否安装.NET CLI工具

输入dotnet,显示如下说明已安装

输入dotnet -h,可以查看cli相关命令

PS.如果cmd中显示乱码,很可能是因为字体无法输出中文,输入chcp 936即可。

9.2 使用cli创建.NET应用

输入cmd命令:dotnet new -l

显示当前cli所有可创建的模板类型。

选好模板后,按如下流程执行------

  1. cmd命令:C:\CodeRepository.NETCore basics ,跳转到指定文件夹
  2. dotnet new XXXX(希望创建的模板名称)

指定文件夹下会自动创建新的解决方案

9.3 运行创建好的解决方案

cmd命令:dotnet run

和使用VS运行相同,页面输出结果

9.4 生成解决方案

cmd命令:dotnet build

相关推荐
唐青枫10 小时前
C#.NET PInvoke 深入解析:封送、内存布局与原生互操作实战
c#·.net
yywww12 小时前
GenHTTP on .NET 11 登顶HTTP Arena 多个榜单(这是何方神圣)
.net
咕白m62519 小时前
C# 如何限制 PDF 复制、打印权限?
c#·.net
慧都小妮子20 小时前
GcExcel 服务端 Excel 组件:无需安装 Office 的 Java/.NET 报表方案
java·.net·excel·gcexcel·服务端excel组件
我是唐青枫2 天前
C#.NET StructureMap 从依赖注入到项目实战
开发语言·c#·.net
Lost of 程序猿2 天前
C# 12 / .NET 9 新特性机制深度:编译器替你写了什么,哪些糖吃下去会出事
windows·c#·.net
唐青枫3 天前
C#.NET StructureMap 从依赖注入到项目实战
c#·.net
智码看视界3 天前
.NET 10 推理大模型TensorSharp 3.3.0 部署实测:纯.NET推理引擎反超llama.cpp 1.5倍,DFlash2提速62%
c#·.net·llama.cpp·.net 10·tensorsharp·本地大模型推理·开源推理引擎
唐青枫3 天前
别把日志、权限写进业务方法:C#.NET 动态代理从原理到实战
c#·.net