Kiểm tra cách hoạt động của appsettings.json

Trang Cập Nhật :
Ngày tạo trang :

Môi trường

Visual Studio-giường
  • Visual Studio 2019
ASP.NET lõi
  • 3,0
  • 3,1

Lúc đầu

Khi bạn tạo một dự án ASP.NET Core mới, bạn có thể tạo appsettings. JSONappsettings. Tập tin cấu hình Development. JSON là Bao gồm trong dự án.

Những gì được đặt ở đây là tham số được thiết lập đểappsettings. JSON. Tại thời gian phát triển, các thông số của cùng một phím là appsettings. Các thiết lập ghi đè trong Development. JSON được sử dụng.

image

Trong bài viết này, tôi muốn xem cách chúng được chuyển sang và nạp.

Chỉnh sửa để xem cách hoạt động của nó

Hãy thử thêm tham số vào mỗi tập tin cấu hình để xem cách hoạt động. Thêm một phần Testobject cho mỗi một và thêm tham sốtestvalue .

Tệp appsettings. JSON được viết bằng mã ký tự Shift-JIS, vì vậy nếu bạn muốn bao gồm Nhật bản, Lưu lại một lần nữa trong UTF-8.

appsettings. JSON

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "TestObject": {
    "TestValue": "Root です。",
    "Comment": "日本語を使用する場合は appsettings.json を UTF-8 で保存しなおすこと。"
  }
}

Appsettings. Phát triển. JSON

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "TestObject": {
    "TestValue": "Development です。",
    "Comment": "日本語を使用する場合は appsettings.json を UTF-8 で保存しなおすこと。"
  }
}

Nhận các tham số của tập tin cấu hình trong hành động index của HomeController.cs. Có một phương pháp thu thập bằng cách xác định các lớp học, nhưng tôi thích nó bởi vì nó không phải là chủ đề này.

private readonly ILogger<HomeController> _logger;
private readonly IConfiguration _configuration;

// DI で IConfiguration を受け取る
public HomeController(ILogger<HomeController> logger, IConfiguration configuration)
{
  _logger = logger;
  _configuration = configuration;
}

public IActionResult Index()
{
  // appsettings.json から値を取得します。
  // 階層化されている場合は GetSection を使用します。
  ViewData["Message"] = _configuration.GetSection("TestObject").GetValue<string>("TestValue");
  return View();
}

Nếu bạn tạo, ràng buộc và tải một lớp, bạn sẽ tìm thấy mã tương tự như sau:

// クラス定義
public class TestObject
{
  public string TestValue { get; set; }
  public string Comment { get; set; }
}

// 読み込み
var testObject = _configuration.GetSection(nameof(TestObject)).Get<TestObject>();

Hiển thị giá trị thu được trong index. cshtml ở phía View.

<p>appsettings.json から取得したテキストを表示</p>
<p>@ViewData["Message"]</p>

Gỡ lỗi chạy cục bộ

Xây dựng dự án và gỡ lỗi và cố gắng chạy appsettings. Bạn có thể thấy rằng các thiết lập Development. JSON được hiển thị.

image

Phát triển là lý do tại sao các biến môi trường được nạp khi bạn chạy một ứng dụng với ASP.NET Core. Tham số được đặt thành ASPNETCORE_ENVIRONMENT như tham số là appsettings. XXXX. JSON Tệp cấu hình phù hợp với phần xxxx bây giờ được tải.

Phát triển được thiết lập khi gỡ lỗi, đó là tab gỡ lỗi cho thuộc tính dự án. Bạn có thể thấy rằng nó được đặt trong biến môi trường.

image

Nếu bạn cố gắng thay đổi giá trị này sang giá trị khác và gỡ lỗi, Tôi nghĩ rằng nó được xác nhận rằng bên phát triển không được nạp và phía gốc được nạp.

image

Bằng cách này, tham số này không được phân tách bằng Debug hoặc Release, vì vậy nếu bạn gỡ lỗi với Release, Các thông số phát triển được sử dụng. Gỡ lỗi và phiên bản không được tách ra, như trong web. config, nhưng bạn có thể đăng ký nhiều hồ sơ. Bạn có thể thực hiện hành động, chẳng hạn như kiểm tra cài đặt phát hành bằng cách chuyển ở đó.

Triển khai và chạy trong IIS

Vì vậy, điều gì sẽ xảy ra nếu bạn triển khai và chạy nó trong IIS? Thử thực sự tạo một trang web trong IIS và triển khai chương trình.

image

Đây là thiết lập tuyến đường được sử dụng. Vì vậy, nếu bạn đang triển khai một chương trình để IIS, bạn không phải lo lắng về phát triển cài đặt.

image

Bạn có thể tải tệp cấu hình tại thời gian chạy nếu bạn có bất kỳ giá trị trong các biến môi trường ASPNETCORE_ENVIRONMENT ở phía IIS. Mở trình chỉnh sửa cấu hình từ thiết đặt site.

image

Từ phần, chọn Aspnetcore trong System. Webserver.

image

Chọn Applicationhost. config từ vị trí.

image

Mở bộ sưu tập môi trường.

image

Thêm bộ sưu tập.

image

Nhập ASPNETCORE_ENVIRONMENT trong tên, và sau đó gõ tên của tệp cấu hình bạn muốn nạp vào giá trị.

image

Nếu bạn khởi động lại trang web và xem màn hình web, bạn có thể thấy rằng bạn đang tải tệp cấu hình đích.

image

Tóm tắt

Nếu cấu hình ban đầu là trường hợp, appsettings. Nếu các thiết đặt phát triển. JSON được tải và triển khai trong một môi trường sản xuất như IIS, Tôi nghĩ rằng đó là OK để nghĩ rằng appsettings. JSON sẽ được nạp.

Bạn chỉ có phát triển khi bạn tạo một dự án, nhưng bạn có thể tạo nhiều hơn một appsettings, và bạn có thể thay đổi phần phát triển tên bất kỳ. Ví dụ: nếu bạn có nhiều vị trí thực thi, bạn có thể tạo nhiều địa điểm, sau đó thiết lập và vận hành ASPNETCORE_ENVIRONMENT cho môi trường của bạn.