ראה כיצד פועל appsettings.json

עודכן דף :
תאריך יצירת דף :

סביבה

ויז סטודיו
  • ויז סטודיו 2019
ASP.NET ליבה
  • 3.0
  • 3.1

. בהתחלה

בעת יצירת פרוייקט ASP.NET Core חדש, באפשרותך ליצור הגדרות appsettings. json והגדרות. התפתחות קובץ התצורה של json הוא כלולים בפרויקט.

מה שנקבע כאן הוא הפרמטר שהוגדר ל-appsettings. json . בזמן הפיתוח, הפרמטרים של אותו מפתח הם appsettings. ההגדרות שהוחלפו בפיתוח. json.

image

במאמר זה, אני רוצה לראות איך הם ממותגים וטעונים.

ערוך כדי לראות כיצד הוא פועל

נסה להוסיף פרמטרים לכל קובץ תצורה כדי לראות כיצד הוא פועל. הוסף מקטע TestObject לכל אחד מהם והוסף את הפרמטרtestvalue .

קובץ ה-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 מוטען כעת.

הפיתוח מוגדר בעת איתור באגים, שהוא הכרטיסיה ' איתור באגים ' עבור מאפייני פרוייקט. ניתן לראות שהוא מוגדר במשתנה הסביבה.

image

אם תנסה לשנות ערך זה לערך אחר ולאתר אותו באגים, אני חושב שהוא אישר כי צד הפיתוח אינו טעון ואת הצד השורש טעון.

image

דרך אגב, פרמטר זה אינו מופרד באמצעות Debug או Release, כך שאם אתה מבצע איתור באגים באמצעות שחרור, נעשה שימוש בפרמטרי הפיתוח. אין אפשרות להפריד את איתור הבאגים והשחרור, כמו ב-web. config, אך באפשרותך לרשום פרופילים מרובים. באפשרותך לנקוט בפעולה, כגון בדיקת הגדרות השחרור על-ידי החלפה שם.

פריסה והפעלה ב-IIS

מה קורה אם אתה פורס ומפעיל אותו ב-IIS? נסה למעשה ליצור אתר ב-IIS ולפרוס את התוכנית.

image

זוהי הגדרת הנתיב הצפוי לשימוש. לכן, אם אתה פורס תוכנית ל-IIS, אינך צריך לדאוג לגבי פיתוח הגדרות.

image

באפשרותך לטעון את קובץ התצורה בזמן ריצה אם יש לך ערך כלשהו במשתנה הסביבה ASPNETCORE_ENVIRONMENT בצד IIS. פתח את עורך התצורה מתוך הגדרות האתר.

image

מהמקטע, בחר באפשרות Aspnetcore במערכת. webserver.

image

בחר באפשרות ' יישום מארח. config ' מהמיקום.

image

פתח את אוסף משתני הסביבה.

image

הוסף אוסף.

image

הקלד ASPNETCORE_ENVIRONMENT בשם ולאחר מכן הקלד את שם קובץ התצורה שברצונך לטעון לערך.

image

אם תפעיל מחדש את האתר ותציג את מסך האינטרנט, תוכל לראות שאתה טוען את קובץ תצורת היעד.

image

סיכום

אם התצורה ההתחלתית היא האירוע, הגדרות הappsettings. אם הגדרות הפיתוח. json נטענות ונפרסות בסביבת ייצור כגון IIS, אני חושב שזה בסדר. לחשוב שאני מבין את ההגדרות json יהיה טעון.

יש לך רק פיתוח כאשר אתה יוצר פרוייקט, אך באפשרותך ליצור יותר מהגדרות appsettings, ובאפשרותך לשנות את חלק הפיתוח לכל שם. אם יש לך יותר ממיקום ביצוע אחד, לדוגמה, באפשרותך ליצור מיקומים מרובים ולאחר מכן להגדיר ולהפעיל את ASPNETCORE_ENVIRONMENT עבור הסביבה שלך.