ASP .NET Core Web API_ 01_项目创建及基
项目创建
-
ASP .NET Core Web Application 设置为Blog.Api
-
选择Empty+No Authentication
-
添加.NET Core类库,Blog.Core + Blog.Infrastructure
-
Infrastructure 依赖 Core
-
Api 依赖 Infrastructure + Core
-
Program + Startup
-
Program进行基础设施的配置,很少发生变化
-
HTTP Server
-
集成 IIS
-
配置信息来源
-
-
Startup 配置自定义行为,可能经常发生变化
-
组件 服务 功能
-
中间件管道
-
-
Startup.cs
-
ConfigureServices
所有程序级的依赖项都可以在这里注册到默认的IoC容器里, 把它们添加到IServiceCollection即可 -
Configure
配置应该遵循Add/Use的风格样式, 首先定义需要什么, 然后定义如何使用它.是真正负责配置HTTP请求管道的方法, 并且运行时也需要它
-
基础配置
-
运行时环境 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<Startup>();
.UseStartup(typeof(StartupDevelopment).GetTypeInfo().Assembly.FullName);
image
image
image
-
HTTPS
-
微软建议所有应用调用HTTPS重定向中间件,来把所有的HTTP请求重定向为HTTPS
-
Startup:
- ConfigureServices方法注册,并配置端口及状态码
-
services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
* Configure方法使用该中间件: app.UseHttpsRedirection()
-
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()
- 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"
}
}
}
}