項(xiàng)目創(chuàng)建
ASP .NET Core Web Application 設(shè)置為Blog.Api
選擇Empty+No Authentication
-
添加.NET Core類(lèi)庫(kù),Blog.Core + Blog.Infrastructure
Infrastructure 依賴(lài) Core
Api 依賴(lài) Infrastructure + Core
Program + Startup
-
Program進(jìn)行基礎(chǔ)設(shè)施的配置灶挟,很少發(fā)生變化
HTTP Server
集成 IIS
配置信息來(lái)源
-
Startup 配置自定義行為盖桥,可能經(jīng)常發(fā)生變化
組件 服務(wù) 功能
中間件管道
-
Startup.cs
ConfigureServices
所有程序級(jí)的依賴(lài)項(xiàng)都可以在這里注冊(cè)到默認(rèn)的IoC容器里, 把它們添加到IServiceCollection即可Configure
配置應(yīng)該遵循Add/Use的風(fēng)格樣式, 首先定義需要什么, 然后定義如何使用它.是真正負(fù)責(zé)配置HTTP請(qǐng)求管道的方法, 并且運(yùn)行時(shí)也需要它
基礎(chǔ)配置
-
運(yùn)行時(shí)環(huán)境 ASPNETCORE_ENVIRONMENT
ASP.NET Core還允許我們按約定為指定環(huán)境建立單獨(dú)的啟動(dòng)配置. 啟動(dòng)類(lèi)可以通過(guò)這個(gè)函數(shù)定義UseStartup(startupAssemblyName: xxx); 運(yùn)行時(shí)會(huì)在這個(gè)指定的組件查找叫做Startup, Startup[環(huán)境名]的類(lèi), 其中[環(huán)境名]就是ASPNETCORE_ENVIRONMENT這個(gè)環(huán)境變量的值. 如果能找到指定環(huán)境的類(lèi), 那么它將覆蓋默認(rèn)的啟動(dòng)類(lèi).
例如:環(huán)境變量值如果是Development的話, 那么運(yùn)行時(shí)就會(huì)嘗試尋找Startup和StartupDevelopment類(lèi), 該約定在啟動(dòng)類(lèi)里面的方法名上也有效, 環(huán)境特定的啟動(dòng)類(lèi)里的兩個(gè)方法分別是 Configure[環(huán)境名]和Configure[環(huán)境名]Services.
ASPNETCORE_ENVIRONMENT環(huán)境變量 Production Development Staging 沒(méi)有設(shè)置則使用Production
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
//.UseStartup<Startup>();
.UseStartup(typeof(StartupDevelopment).GetTypeInfo().Assembly.FullName);
-
HTTPS
微軟建議所有應(yīng)用調(diào)用HTTPS重定向中間件壶唤,來(lái)把所有的HTTP請(qǐng)求重定向?yàn)镠TTPS
-
Startup:
- ConfigureServices方法注冊(cè),并配置端口及狀態(tài)碼
services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
* Configure方法使用該中間件: app.UseHttpsRedirection()
-
HSTS (HTTP Strict Transport Sercurity Protocol)
微軟建議在生產(chǎn)環(huán)境(production)下啟用HSTS
-
Startup:
- ConfigureServices方法注冊(cè)并配置 HSTS
//HSTS 只配置在生產(chǎn)環(huán)境
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
- 開(kāi)發(fā)時(shí)只保留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"
}
}
}
}