ASP.NET Core + Ng6 实战(二)

作者 Zhendong Ho 日期 2018-09-01
ASP.NET Core + Ng6 实战(二)

运行时环境

ASPNETCORE_ENVIRONMENT环境变量

  • ASP.NET Core使用ASPNETCORE_ENVIRONMENT环境变量。
  • ASP.NET Core应用启动时读取ASPNETCORE_ENVIRONMENT环境变量的值,并保存在IHostingEnvironment.EnvironmentName里。
  • 环境变量ASPNETCORE_ENVIRONMENT可以是任何值。但是ASP.NET Core默认值有3个:
    1. Production
    2. Development
    3. Staging
  • 如果ASPNETCORE_ENVIRONMENT没有被设置,那么会默认取值为Production。

环境变量的设置

  • 在项目属性中

右键BlogDemo.Api项目->属性->调试,可以看到如下页面,环境变量的预设值为Development。

1535795636697

  • 在launchSettings.json中修改

在BlogDemo.Api项目下,展开Properties,打开launchSettings.json文件,环境变量就配置在profiles下对应的项目名中。

注意:项目属性调试中的环境变量取值是launchSettings.json配置的环境变量,如果launchSettings.json中把环境变量修改为“Production”,则项目属性调试中的环境变量也会对应修改。

1535795994573

  • 在系统里设置环境变量。

判断环境变量

在Startup.cs文件中,使用Configure方法的env参数判断当前的环境变量

1535797150832

使用基于环境的Startup类

  • Startup{环境名称}
    • StartupDevelopment
    • StartupProduction
    • StartupStaging
  • 在Program里配置IWebHostBuilder时使用UseStartup(IWebHostBuilder, String),而不是UseStartup\<Startup>(IWebHostBuilder)。
    • String参数是StartupXxx所在的Assembly的名字。
  • 也可以根据环境在同一个Startup类里面定义不同的方法,具体请查阅官方文档。

在项目中添加一个StartupDevelopment.cs文件和StartupProduction.cs文件。

1535798435437

修改Program.cs中的代码,把UseStartup\<Startup>()改为.UseStartup()。

1535798715791

打开launchSettings.json,把IIS的相关配置去掉,保留控制台配置。

1535798840656

点击运行,看到程序进入了环境变量为Production的StartupProduction类方法的断点中。

1535799097285

支持HTTPS

使用HTTPS

微软建议所有的ASP.NET Core应用程序都调用HTTPS重定向中间件,来把所有的HTTP请求重定向为HTTPS。

Startup中:

  • ConfigureServices方法注册,并配置端口和状态码等:
    • services.AddHttpsRedirection(…)
  • Configure方法使用该中间件:
    • app.UseHttpsRedirection()

注册并使用HTTPS重定向中间件

在StartupDevelopment类中修改代码。

在ConfigureServices方法中添加如下代码,注册HTTPS中间件。

services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = StatusCode.Status307TemporaryRedirect;//状态码
options.HttpsPort = 5001;//端口号
});

在Configure方法中添加代码,使用HTTPS中间件。注意使用HTTPS重定向中间件的顺序,必须在UseMvc之后。

app.UseHttpsRedirection();//使用HTTPS重定向中间件

完整代码如图所示。

1535802656080

在launchSettings.json文件中修改代码。

1535803257947

运行程序,可以发现,打开的http://localhost:5000/api/values跳转到https://localhost:5001/api/values了。

说明HTTPS重定向中间件起作用。

1535803362763

HSTS

微软建议在生产环境下启用HSTS(HTTP Strict Transport Security Protocal)

Startup中:

  • ConfigureServices方法注册和配置HSTS:
    • services.AddHsts(…)
  • Configure方法是用该中间件:
    • app.UseHsts()

在StartupProduction类中使用HSTS:

1535803992356

集成Entity Framework Core

未完待续。。。