ASP.NET Core基础

托管设置

设置项目文件的AspNetCoreHostingModel属性

<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <!--<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>-->
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
  </PropertyGroup>
  • InProcess:使用IIS服务器托管

  • OutOfProcess:使用自带Kestrel服务器托管(自宿主)

配置源

  • appsettings.jsonappsettings.{xxxxx}.json 不同环境下对应不同的托管环境

  • User secrets (用户机密)

  • Environment variables (环境变量)

  • Command-line argument (命令行参数) donnet run MyKey="xxxxxx" Tips:它们的关系是依次加载,逐层覆盖

中间件

  • 可同时被访问和请求

  • 可以处理请求后,然后将请求传递给下一个中间件

  • 可以处理请求后,并使管道短路

  • 可以处理传出响应

  • 中间件是按照添加的顺序执行的

通过在Configure中添加参数ILogger<Startup> logger引入ASP.Net Core自带的日志组件。

输出日志:(可以看到三个中间件的执行过程)

请求处理管道的中 3 个非常重要的知识点:

  • 所有的请求都会在每个中间件组件调用next()方法之前触发。

  • 当中间件处理请求并产生响应时,请求处理流程在管道中开始反向传递。

  • 所有的响应都会在每个中间件组件调用next()方法之前触发。

乱码问题:(设置字符类型)

context.Response.ContentType = "text/plain; charset=utf-8";

开发环境变量

  • Development:开发环境

  • Staging:演示(模式,临时)环境

  • Production:正式(生产)环境

Ops:

  • 使用ASPNETCORE_ENVIRONMENT环境变量设置开发环境。

  • 在开发机上,在launchSettings.json文件中设置环境变量。

  • 在Staging和Production环境时,尽量在操作系统设置环境变量。

  • 使用IHostEnvironment服务访问运行时环境

  • 除了标准环境之外还支持自定义环境(UAT、QA等)

依赖注入

一表搞懂ScopedTransientSingleton三个依赖注入服务

服务类型

同一个HTTP请求的范围内

横跨多个不同的HTTP请求

Scoped(作用域)

同一个实例

新实例

Transient(瞬时)

新实例

新实例

Singleton(单例)

同一个实例

同一个实例

最后更新于