『ASP.NET Core高性能シリーズ』環境(EnvironmentName)の設定
7734 ワード
一、概説
プログラム起動時にHostは環境関連データをキャプチャし、IEnvironment(廃棄すると言われていますが、この設計は依然として矛盾していると思います.非WebとWebの区別を考慮していないためです)に渡し、IWebHostEnvironmentにASP.NET Core環境では、同様に
IWebHostEnvironment.EnvironmentName,ASP.NET Coreフレームワーク自体はDevelopment、Staging、Productionの3つの状態をEnvironmentNameの値として提供し、
public interface IWebHostEnvironment : Microsoft.Extensions.Hosting.IHostEnvironment
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
if (env.IsProduction() || env.IsStaging() || env.IsEnvironment("Staging_2"))
{
app.UseExceptionHandler("/Error");
}
}
二、開発提案
異なる環境のために異なるStartupクラスを定義することを提案し、ASP.NET Coreは、独自の環境に応じて異なるStartup{EnvironmentName}ファイルをロードします.たとえば、
開発環境はStartupDevelopmentをロードします.csファイル、オンライン環境でStartupProductionをロードします.csファイル
Program.csにおけるStartupに対するロードコードはプログラムセットでロードする必要がある.
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
var assemblyName = typeof(Startup).GetTypeInfo().Assembly.FullName;
webBuilder.UseStartup(assemblyName);
});
}
三、IWebHostEnvironmentを設定する。EnvironmentName
1.開発段階では、プロジェクトのjsonによる設定
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:63327",
"sslPort": 44365
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"LearnAspCore": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
}
}
}
dotnet runを使用してアプリケーションを起動する場合:使用可能な場合はlaunchSettings.json . launchSettings.jsonのenvironmentVariables設定は、環境変数の代わりになります.ベアラ環境が表示されます.
インタラクションの例:
PS C:\Websites\EnvironmentsSample> dotnet run
Using launch settings from C:\Websites\EnvironmentsSample\Properties\launchSettings.json...
Hosting environment: Development
Content root path: C:\Websites\EnvironmentsSample
Now listening on: http://localhost:54340
Application started. Press Ctrl+C to shut down.
2.VSCode
Visual Studioコードを使用する場合は、vscode/launch.jsonファイルに環境変数を設定します.次の例では、環境を
Development
に設定します.{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (web)",
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
]
}
そこにはないjsonファイルのDevelopment環境でアプリケーションを起動する場合は、環境変数を使用して環境を設定したり、コマンドラインを起動したりすることができます.
3.環境変数の設定方法
1)Windowsで現在のウィンドウで有効な方法
a.現在のcmdウィンドウの下で有効
set ASPNETCORE_ENVIRONMENT=Development // set ASPNETCORE_ENVIRONMENT
b.現在のPowershellで有効
$Env:ASPNETCORE_ENVIRONMENT = "Development"
2)Windowsグローバル設定の方式
a.「コントロールパネル」>「システム」>「環境変数の設定の詳細」
b.cmdコマンド
setx ASPNETCORE_ENVIRONMENT Development /M // /M ,
c.powershell
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development", "Machine")
Machineオプション値は、システムレベルで環境変数を設定することを示します.オプション値をUserに変更すると、ユーザーアカウントの環境変数が設定されます.
3)クラスUnix系の設定方法
export ASPNETCORE_ENVIRONMENT=Development
グローバルに有効にする場合は、次のCentosの構成方法で該当するプロファイルに追加します.
/etc/profile , , 。 , ~/.bash_profile
export ASPNETCORE_ENVIRONMENT=Development
:
source /etc/profile
,
echo $ASPNETCORE_ENVIRONMENT=Development
。
4)その他の設定方法
パブリッシュ後のプログラムのデフォルトはProductionモードで、環境変数が設定されている場合は環境変数に準じます.また、以下のようにコードに実行環境を強制的に指定することもできる.
Host.CreateDefaultBuilder(args)
.UseEnvironment("Development")
それ以外は.NET Coreは、IIS、IISプログラムプール、AzureでEnvironmentNameを設定することもできます.
四、EnvironmentNameを設置したのは何のためですか
簡単に言えば、私たちのプログラムは異なるEnvironmentNameで異なるコードを実行することができます.通常、異なる環境では、異なる構成をロードする必要があります.
これはすべてEnvironmentNameで柔軟に指定できます.第2段で述べたようにASP.NET Coreは、独自の環境に応じて異なるStartup{EnvironmentName}ファイルをロードします.たとえば、
送信環境はStartupDevelopmentをロードします.csファイル、オンライン環境でStartupProductionをロードします.csファイル、
それだけでなく、同じStartupでは、異なるConfigure{EnvironmentName}Services、Configure{EnvironmentName}メソッドを指定できます.
Configure,ConfigureServices