ببینید که چگونه appsettings.جواد کار می کند

صفحه به روز شده :
تاریخ ایجاد صفحه :

محیط

ویژوال استودیو
  • ویژوال استودیو ۲۰۱۹
ASP.NET هسته
  • ۳/۰
  • ۳/۱

در ابتدا

هنگامی که یک پروژه ASP.NET Core جدید ایجاد می کنید ، می توانید appsettings. json و appsettings ایجاد کنید. فایل پیکربندی توسعه. json موجود در این پروژه است.

آنچه که در اینجا تنظیم شده است پارامتر مجموعه ای بهappsettings. json است. در زمان توسعه ، پارامترهای همان کلید appsettings هستند. تنظیمات رونویسی در توسعه. json استفاده می شود.

image

در این مقاله ، من می خواهم ببینم که چگونه آنها را تغییر و بارگذاری شده است.

ویرایش کنید تا ببینید چگونه کار می کند

سعی کنید اضافه کردن پارامترها به هر فایل پیکربندی برای دیدن چگونه کار می کند. یک بخش Testobject را به هر یک اضافه کنید و پارامترtestobject را اضافه کنید.

فایل appsettings. json با کد کاراکتر shift-JIS نوشته شده است ، بنابراین اگر می خواهید ژاپنی را وارد کنید ، دوباره آن را در UTF-8 ذخیره کنید.

appsettings. json

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

Appsettings. توسعه. json

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

می شود پارامترهای فایل پیکربندی در عمل شاخص از HomeController.cs. یک روش برای به دست آوردن با مشخص کردن کلاس وجود دارد ، اما من آن را دوست دارم به دلیل آن است که این موضوع نیست.

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

اگر شما ایجاد ، اتصال ، و بار کلاس ، شما کد شبیه به موارد زیر را پیدا کنید:

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

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

مقدار به دست آمده در Index. cshtml را نشان می دهد در سمت مشاهده.

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

اشکالزدایی اجرا به صورت محلی

ساخت پروژه و اشکالزدایی آن و سعی کنید برای اجرای appsettings. شما می توانید ببینید که تنظیمات توسعه. json نمایش داده می شود.

image

توسعه به همین دلیل است که متغیرهای محیطی هنگام اجرای یک برنامه با ASP.NET Core بارگذاری می شوند. پارامتر تنظیم شده برای ASPNETCORE_ENVIRONMENT به عنوان پارامتر appsettings است. XXXX. json یک فایل پیکربندی که منطبق بر بخش XXXX در حال حاضر لود شده است.

توسعه تنظیم شده است که اشکال زدایی ، که زبانه debug برای خواص پروژه است. شما می توانید ببینید که آن را در متغیر محیط زیست تنظیم شده است.

image

اگر سعی دارید این مقدار را به مقدار دیگری تغییر دهید و آن را اشکال زدایی کنید ، من فکر می کنم آن است که تایید شده است که طرف توسعه لود نمی شود و طرف ریشه لود شده است.

image

به هر حال ، این پارامتر توسط Debug یا Release جدا نشده است ، بنابراین اگر شما با انتشار اشکال زدایی کنید ، از شاخص های توسعه استفاده شده است. اشکالزدایی و انتشار را نمی توان از هم جدا کرد ، همانطور که در web. config ، اما شما می توانید چندین پروفایل را ثبت کنید. شما می توانید اقدام ، مانند چک کردن تنظیمات انتشار با تعویض وجود دارد.

استقرار و اجرا در IIS

پس چه اتفاقی می افتد اگر شما در IIS استقرار و اجرا کنید ؟ سعی کنید در واقع ایجاد یک سایت در IIS و استقرار برنامه.

image

این راه تنظیم مسیر میله به مورد استفاده قرار گیرد. بنابراین اگر شما در حال استقرار یک برنامه به IIS هستید ، لازم نیست نگران توسعه تنظیمات باشید.

image

شما می توانید فایل پیکربندی را در زمان اجرا بار اگر شما هر گونه ارزش در محیط ASPNETCORE_ENVIRONMENT متغیر در سمت IIS. ویرایشگر پیکربندی را از تنظیمات سایت باز کنید.

image

از بخش ، Aspnetcore را انتخاب کنید در سیستم. وب سرور.

image

Applicationhost. config را از مکان انتخاب کنید.

image

مجموعه environmentVariables را باز کنید.

image

یک مجموعه اضافه کنید.

image

ASPNETCORE_ENVIRONMENT را در نام تایپ کنید و سپس نام فایل پیکربندی را که می خواهید به مقدار آن بارگیری کنید تایپ کنید.

image

اگر سایت را دوباره راه اندازی کنید و صفحه وب را مشاهده کنید ، می توانید ببینید که فایل پیکربندی هدف را بارگیری می کنید.

image

خلاصه

اگر پیکربندی اولیه مورد است ، appsettings. اگر تنظیمات توسعه. json لود می شوند و در یک محیط تولید مانند IIS مستقر ، من فکر می کنم آن را خوب به فکر می کنم که appsettings. json بارگذاری خواهد شد.

شما فقط توسعه زمانی که یک پروژه ایجاد می کنید ، اما شما می توانید بیش از یک appsettings ایجاد کنید ، و شما می توانید بخش توسعه را به هر نام تغییر دهید. برای مثال ، اگر بیش از یک مکان اعدام داشته باشید ، می توانید مکان های متعددی ایجاد کنید و سپس ASPNETCORE_ENVIRONMENT را برای محیط خود تنظیم و اجرا کنید.