Lihat bagaimana appsettings.json berfungsi

Laman dikemaskini :
Tarikh penciptaan halaman :

Persekitaran

Visual Studio
  • Visual Studio 2019
ASP.NET Core
  • 3.0
  • 3.1

Pada mulanya

Apabila anda mencipta projek ASP.NET Core yang baru, anda boleh mencipta appsettings. JSON dan appsettings. Pembangunan. fail konfigurasi JSON Termasuk dalam projek.

Apa yang ditetapkan di sini adalah parameter yang ditetapkan untukappsettings. JSON. Pada masa pembangunan, parameter kekunci yang sama adalah appsettings. Tetapan yang ditulis dalam pembangunan. JSON digunakan.

image

Dalam artikel ini, saya mahu melihat bagaimana ia dipasang dan dimuatkan.

Edit untuk melihat bagaimana ia berfungsi

Cuba tambahkan parameter pada setiap fail konfigurasi untuk melihat cara ia berfungsi. Tambah Seksyen Testobject kepada setiap satu dan tambah parametertestvalue .

Fail yang appsettings. JSON ditulis dengan kod aksara Shift-JIS, jadi jika anda ingin memasukkan Bahasa Jepun, Simpan sekali lagi dalam UTF-8.

appsettings. JSON

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

Appsettings. Pembangunan. JSON

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

Mendapat parameter fail konfigurasi dalam tindakan Indeks HomeController.cs. Terdapat kaedah untuk mendapatkan dengan menentukan kelas, tetapi saya suka kerana ia tidak tertakluk ini.

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();
}

Jika anda mencipta, mengikat dan memuatkan kelas, anda akan menemui kod yang serupa dengan yang berikut:

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

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

Memaparkan nilai yang diperolehi dalam indeks. cshtml pada bahagian pandangan.

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

Nyahpepijat dijalankan secara tempatan

Membina projek dan menyahpepijat dan cuba untuk menjalankan appsettings. Anda boleh melihat bahawa pembangunan. tetapan JSON dipaparkan.

image

Pembangunan adalah sebab mengapa pembolehubah persekitaran dimuatkan apabila anda menjalankan aplikasi dengan ASP.NET Core. Parameter yang ditetapkan untuk ASPNETCORE_ENVIRONMENT sebagai parameter adalah appsettings. XXXX. JSON Fail konfigurasi yang sepadan dengan bahagian xxxx kini dimuatkan.

Membangunkan disetkan apabila debugging, yang merupakan tab nyahpepijat untuk sifat projek. Anda boleh melihat bahawa ia ditetapkan dalam pembolehubah persekitaran.

image

Jika anda cuba menukar nilai ini kepada nilai yang berbeza dan nyahpepijat, Saya berfikir bahawa ia disahkan bahawa pihak pembangunan tidak dimuatkan dan sisi akar dimuatkan.

image

Dengan cara ini, parameter ini tidak dipisahkan oleh nyahpepijat atau keluaran, jadi jika anda nyahpepijat dengan keluaran, Parameter pembangunan digunakan. Nyahpepijat dan keluaran tidak boleh dipisahkan, seperti dalam web. config, tetapi anda boleh mendaftar berbilang profil. Anda boleh mengambil tindakan, seperti menyemak tetapan pelepasan dengan menukar di sana.

Gunakan dan jalankan dalam IIS

Jadi apa yang berlaku jika anda menggunakan dan menjalankannya dalam IIS? Cuba sebenarnya mewujudkan sebuah laman web di IIS dan menggunakan program ini.

image

Ini adalah tetapan laluan yang dijadualkan akan digunakan. Jadi, jika anda sedang menggunakan program untuk IIS, anda tidak perlu bimbang tentang membangunkan tetapan.

image

Anda boleh memuatkan fail konfigurasi pada masa berjalan jika anda mempunyai sebarang nilai dalam pemboleh ubah persekitaran ASPNETCORE_ENVIRONMENT di sebelah IIS. Buka editor konfigurasi daripada tetapan tapak.

image

Daripada bahagian, pilih Aspnetcore dalam sistem. webserver.

image

Pilih untuk menghos. tatarajah dari lokasi.

image

Membuka koleksi persekitaran .

image

Tambah koleksi.

image

Taip ASPNETCORE_ENVIRONMENT dalam nama, dan kemudian taipkan nama fail konfigurasi yang anda mahu Muatkan ke dalam nilai.

image

Jika anda memulakan semula tapak tersebut dan melihat skrin web, anda boleh melihat bahawa anda memuatkan fail konfigurasi sasaran.

image

Ringkasan

Jika konfigurasi awal adalah kes, appsettings. Jika pembangunan. tetapan JSON dimuatkan dan dikerahkan dalam persekitaran pengeluaran seperti IIS, Saya fikir ia OK untuk berfikir bahawa appsettings. JSON akan dimuatkan.

Anda hanya mempunyai pembangunan apabila anda mencipta projek, tetapi anda boleh mencipta lebih daripada satu appsettings, dan anda boleh menukar bahagian pembangunan kepada mana-mana nama. Jika anda mempunyai lebih daripada satu lokasi pelaksanaan, contohnya, anda boleh membuat berbilang lokasi, dan kemudian sediakan dan beroperasi ASPNETCORE_ENVIRONMENT untuk persekitaran anda.