Kestrel 服务
ASP.NET Core是一个跨平台框架。 这意味着它支持在不同类型的操作系统(例如Windows,Linux或Mac)上开发和运行应用程序。
Kestrel是ASP.NET Core应用程序的跨平台Web服务器。 这意味着该服务器支持ASP.NET Core支持的所有平台和版本。 默认情况下,它包含在.NET Core应用程序中作为内部Web服务器。
Kestrel Web服务器通常用作边缘服务器,即面向Internet的Web服务器,它直接处理来自客户端的传入HTTP请求。 对于Kestrel Web服务器,用于承载和运行ASP.NET Core应用程序的进程名称是项目名称。
IIS、 IIS Express
IIS 的 进程名称 ===》w3wp.exe
IIS Express.exe 的 IISExpress
IIS Express 是 IIS 的轻量级自包含版本。它针对 Web 应用程序开发进行了优化。您需要记住的最重要的一点是,我们仅在开发中使用 IIS Express,而不是生产。在生产中,我们通常使用 IIS。
InProcess 、OutOfProcess
双击 或者 只需从解决方案资源管理器右键单击应用程序,然后单击上下文菜单中的"编辑项目文件"选项,如下代码所示。
》》》从性能
InProcess 托管模型提供的请求吞吐量明显高于 OutOfProcess 托管模型。
OutOfProcess 进程外托管
》InProcess 进程内托管 进程内模型不使用Kestrel,
InProcess VS OutOfProcess
- InProcess 它只有一个服务器: IIS(用 IIS Express 启动,进程名:IIS Express)、Kestrel(用当前项目名称启动,进程名就是项目名称)
- OutOfProcess 它有两个服务器 一个内部的服务器(Kestrel)、一个外部服务器(IIS、Nginx、Apache等)
用CLI命令 启动 dotnet run ,就是OutOfProcess。 进程名称是 项目名
启动配置
IIS Express 报错
》》》解决方案
》》添加 Web.config
//关闭集成模式 即可
<?xml version="1.0" encoding="utf-8"?>
<configuration><system.webServer><validation validateIntegratedModeConfiguration="false"/></system.webServer>
</configuration>
Net6 +
读取配置 net 6 之前版本
在 StarpUp类中 构造函数 public class Startup{public Startup(IConfiguration configuration){Configuration = configuration;}public IConfiguration Configuration { get; }public void ConfigureServices(IServiceCollection services){services.AddControllers(); }public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage(); }app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapGet('/',async context=>{//await context.Response.WriteAsync(Configuration["Logging:LogLevel:Default"])await context.Response.WriteAsync(Configuration["ZenInfo"])});});}}
读取配置 net 6 之后版本
{"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},“Age”:100,"AllowedHosts": "*","ZenInfo": "===","Like": ["A","B","C"]
}
》》》通过索引器读取
var info = config[“ZenInfo”];
var like= config[“Like:0”]; //读数组中第一个元素 A
var De= config[“Logging:LoggLevel:Default”]; //
》》》通过GetValue() f泛型方法进行读取
通过索引器只能返回字符串类型的值,如果要读取其它简单类型的对象,如 int,bool,float等,则可以通过GetValue()方法
var age = config.GetValue(“Age”)
》》》读取数组
通过索引器、泛型GetValue 只能读取简单类型的对象。如果要读取复杂对象【如 数组、列表等】,需要使用绑定
//获取整个数组
var like = new List();
config.Bind(“Like”,like);
》》》整个对象绑定
假设转换的类名 为 ZenClass
var zen = new ZenClass();config.Bind(zen);
zen.Age //年龄
zen.Like ;// 或者数组 LIke等
配置文件读取的顺序
可以通过