Lihat cara kerja appsettings.json

Halaman Diperbarui :
Tanggal pembuatan halaman :

Lingkungan

Studio visual
  • Visual Studio 2019
ASP.NET inti
  • 3,0
  • 3,1

Pada mulanya

Ketika Anda membuat proyek ASP.NET Core baru, Anda dapat membuat AppSettings. JSON dan AppSettings. File konfigurasi Development. JSON adalah Termasuk dalam proyek.

Apa yang ditetapkan di sini adalah parameter diatur keAppSettings. JSON. Pada saat pengembangan, parameter kunci yang sama adalah AppSettings. Pengaturan ditimpa di Development. JSON digunakan.

image

Pada artikel ini, saya ingin melihat bagaimana mereka beralih dan dimuat.

Edit untuk melihat cara kerjanya

Coba tambahkan parameter ke setiap file konfigurasi untuk melihat cara kerjanya. Tambahkan bagian Testobject ke masing-masing dan tambahkan parametertestvalue .

File AppSettings. JSON ditulis dengan kode karakter Shift-JIS, jadi jika Anda ingin menyertakan bahasa Jepang, Simpan 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. Pengembangan. JSON

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

Mendapatkan parameter dari file konfigurasi dalam tindakan index dari HomeController.cs. Ada metode mendapatkan dengan menentukan kelas, tapi aku menyukainya karena tidak subjek 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 membuat, mengikat, dan memuat kelas, Anda akan menemukan kode yang mirip dengan berikut ini:

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

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

Menampilkan nilai yang diperoleh di index. cshtml pada sisi tampilan.

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

Debug dijalankan secara lokal

Membangun proyek dan debug dan mencoba untuk menjalankan AppSettings. Anda dapat melihat bahwa pengaturan Development. JSON ditampilkan.

image

Pengembangan adalah alasan mengapa variabel lingkungan dimuat ketika Anda menjalankan sebuah aplikasi dengan ASP.NET Core. Parameter ditetapkan ke ASPNETCORE_ENVIRONMENT sebagai parameter AppSettings. XXXX. JSON Berkas konfigurasi yang cocok dengan porsi xxxx sekarang dimuat.

Kembangkan diatur saat debugging, yang merupakan debug tab untuk properti proyek. Anda dapat melihat bahwa itu diatur dalam variabel lingkungan.

image

Jika Anda mencoba untuk mengubah nilai ini ke nilai yang berbeda dan debug, Saya berpikir bahwa itu dikonfirmasi bahwa sisi pengembangan tidak dimuat dan sisi akar dimuat.

image

Omong-omong, parameter ini tidak dipisahkan oleh debug atau release, jadi jika Anda debug dengan release, Parameter pengembangan yang digunakan. Debug dan release tidak dapat dipisahkan, seperti dalam web. config, tetapi Anda dapat mendaftarkan beberapa profil. Anda dapat mengambil tindakan, seperti memeriksa pengaturan rilis dengan beralih di sana.

Menyebarkan dan menjalankan di IIS

Jadi apa yang terjadi jika Anda menyebarkan dan menjalankannya di IIS? Coba sebenarnya membuat situs di IIS dan menyebarkan program.

image

Ini adalah pengaturan rute yang dijadwalkan untuk digunakan. Jadi jika Anda menjalankan program ke IIS, Anda tidak perlu khawatir tentang mengembangkan pengaturan.

image

Anda dapat memuat berkas konfigurasi saat menjalankan jika Anda memiliki nilai apa pun di ASPNETCORE_ENVIRONMENT variabel lingkungan di sisi IIS. Buka editor konfigurasi dari pengaturan situs.

image

Dari bagian, pilih Aspnetcore di System. webserver.

image

Pilih Applicationhost. config dari lokasi.

image

Buka koleksi Environmentvariables .

image

Tambahkan koleksi.

image

Ketik ASPNETCORE_ENVIRONMENT dalam nama, dan kemudian ketik nama berkas konfigurasi yang ingin Anda muat ke nilai.

image

Jika Anda memulai ulang situs dan melihat layar web, Anda dapat melihat bahwa Anda memuat berkas konfigurasi target.

image

Ringkasan

Jika konfigurasi awal adalah kasus, AppSettings. Jika pengaturan Development. JSON dimuat dan disebarkan di lingkungan produksi seperti IIS, Saya pikir itu ok untuk berpikir bahwa AppSettings. JSON akan dimuat.

Anda hanya memiliki pengembangan ketika Anda membuat proyek, tetapi Anda dapat membuat lebih dari satu AppSettings, dan Anda dapat mengubah bagian pengembangan nama apapun. Jika Anda memiliki lebih dari satu lokasi eksekusi, misalnya, Anda dapat membuat banyak lokasi, dan kemudian mengatur dan mengoperasikan ASPNETCORE_ENVIRONMENT untuk lingkungan Anda.