ASP .NET Core Web API_ 01_项目创建及基础配置

项目创建

  1. ASP .NET Core Web Application 设置为Blog.Api

  2. 选择Empty+No Authentication

  3. 添加.NET Core类库,Blog.Core + Blog.Infrastructure

    • Infrastructure 依赖 Core

    • Api 依赖 Infrastructure + Core

Program + Startup

  1. Program进行基础设施的配置,很少发生变化

    • HTTP Server

    • 集成 IIS

    • 配置信息来源

  2. Startup 配置自定义行为,可能经常发生变化

    • 组件 服务 功能

    • 中间件管道

  3. Startup.cs

    • ConfigureServices 所有程序级的依赖项都可以在这里注册到默认的IoC容器里, 把它们添加到IServiceCollection即可

    • Configure 配置应该遵循Add/Use的风格样式, 首先定义需要什么, 然后定义如何使用它.是真正负责配置HTTP请求管道的方法, 并且运行时也需要它

ASP .NET Core Web API_ 01_项目创建及基础配置_第1张图片
管道请求

基础配置

  1. 运行时环境 ASPNETCORE_ENVIRONMENT

    • ASP.NET Core还允许我们按约定为指定环境建立单独的启动配置. 启动类可以通过这个函数定义UseStartup(startupAssemblyName: xxx); 运行时会在这个指定的组件查找叫做Startup, Startup[环境名]的类, 其中[环境名]就是ASPNETCORE_ENVIRONMENT这个环境变量的值. 如果能找到指定环境的类, 那么它将覆盖默认的启动类.

    • 例如:环境变量值如果是Development的话, 那么运行时就会尝试寻找Startup和StartupDevelopment类, 该约定在启动类里面的方法名上也有效, 环境特定的启动类里的两个方法分别是 Configure[环境名]和Configure[环境名]Services.

    • ASPNETCORE_ENVIRONMENT环境变量 Production Development Staging 没有设置则使用Production

   public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                //.UseStartup();
                .UseStartup(typeof(StartupDevelopment).GetTypeInfo().Assembly.FullName);
    
ASP .NET Core Web API_ 01_项目创建及基础配置_第2张图片
image
ASP .NET Core Web API_ 01_项目创建及基础配置_第3张图片
image
ASP .NET Core Web API_ 01_项目创建及基础配置_第4张图片
image
  1. HTTPS

    • 微软建议所有应用调用HTTPS重定向中间件,来把所有的HTTP请求重定向为HTTPS

    • Startup:

      • ConfigureServices方法注册,并配置端口及状态码

services.AddHttpsRedirection(options =>

            {

                options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;

                options.HttpsPort = 5001;

            });

    * Configure方法使用该中间件: app.UseHttpsRedirection()
  1. HSTS (HTTP Strict Transport Sercurity Protocol)

    • 微软建议在生产环境(production)下启用HSTS

    • Startup:

      • ConfigureServices方法注册并配置 HSTS

             //HSTS 只配置在生产环境

            services.AddHsts(options =>

            {

                options.Preload = true;

                options.IncludeSubDomains = true;

                options.MaxAge = TimeSpan.FromDays(60);

                options.ExcludedHosts.Add("example.com");

                options.ExcludedHosts.Add("www.example.com");

            });

  * Configure方法使用该中间件: app.UseHsts()
  1. launchSettings.json
  • 开发时只保留console,其余删除
{
  "profiles": {
    "Blog.Api": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "http://localhost:5000/api/posts",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

你可能感兴趣的:(ASP .NET Core Web API_ 01_项目创建及基础配置)