Bạn có thể thay đổi các phân tích cú pháp cấu hình mã chạy trên máy chủ web? Đó là những gì tôi muốn giới thiệu. Điều đó sẽ cho phép bạn cấu hình môi trường tự nhiên hơn trong cài đặt Windows.
Trong khi cách truyền thống để định cấu hình biến số IHostingEnvironment.EnvironmentName
là qua biến môi trường ASPNETCORE_ENVIRONMENT
như bạn đã làm, bạn có thể thay đổi cách ASP.NET Core phân tích cấu hình của nó sao cho bạn có thể đặt biến thông qua đối số dòng lệnh.
Để nhận được vào chi tiết cụ thể ...
Theo mặc định, các tập tin Program.cs
phát ra bởi lệnh dotnet new -t web
trông giống như sau:
public static void Main(string[] args) {
var host = new WebHostBuilder()
.UseKestrel()
.UseUrls("http://0.0.0.0:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Điều này làm cho ASP.NET Lõi sử dụng the default configuration processing (environment variables with a ASPNETCORE_
prefix) để xác định giá trị của IHostingEnvironment.EnvironmentName
, mà bạn đang sử dụng để định cấu hình cách ứng dụng của bạn chạy.
May mắn thay, bạn có thể thay đổi cách ASP.Cấu hình phân tích cú pháp lõi bằng cách sử dụng UseConfiguration()
extension method on WebHostBuilder
. Dưới đây là một ví dụ của việc sử dụng cấu hình tùy chỉnh với việc thực hiện mặc định:
public static void Main(string[] args) {
var configuration =
new ConfigurationBuilder()
.AddEnvironmentVariables("ASPNETCORE_")
.Build();
var host =
new WebHostBuilder()
.UseConfiguration(configuration)
.UseKestrel()
.UseUrls("http://0.0.0.0:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Từ đây, tôi sẽ thay đổi nó để nó có thể sử dụng dòng lệnh ngoài các ASPNETCORE_
biến môi trường tiền tố. Điều này sẽ cho phép bạn dễ dàng chạy ứng dụng của bạn với bất cứ tên môi trường bạn muốn, như vậy:
public static void Main(string[] args) {
var configuration =
new ConfigurationBuilder()
.AddEnvironmentVariables("ASPNETCORE_")
.AddCommandLine(args)
.Build();
var host =
new WebHostBuilder()
.UseConfiguration(configuration)
.UseKestrel()
.UseUrls("http://0.0.0.0:5000")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Sau đó, khi bạn bắt đầu ứng dụng cốt lõi DotNet bạn với dotnet run
, bạn có thể thiết lập các môi trường trên dòng lệnh, như thế này :
dotnet run environment=development
dotnet run environment=staging
Biến môi trường vẫn sẽ được tôn trọng nhưng bạn có thể ghi đè lên qua dòng lệnh khi bạn đang phát triển địa phương. Lưu ý, bạn sẽ cần phải bao gồm gói gói Microsoft.Extensions.Configuration.CommandLine
vào tệp project.json
nếu bạn chưa làm như vậy để có phương thức mở rộng AddCommandLine()
.
Dự án của bạn được xây dựng và triển khai như thế nào? Có lẽ bạn có thể xem xét để truyền một tiền tố môi trường hệ thống cho hệ thống của bạn trong quá trình xây dựng hoặc triển khai dự án. Vì vậy, họ có thể sử dụng tiền tố biến môi trường khác nhau để có được giá trị môi trường. – Ricky