ראה כיצד פועל appsettings.json
סביבה
- ויז סטודיו
-
- ויז סטודיו 2019
- ASP.NET ליבה
-
- 3.0
- 3.1
. בהתחלה
בעת יצירת פרוייקט ASP.NET Core חדש, באפשרותך ליצור הגדרות appsettings. json והגדרות. התפתחות קובץ התצורה של json הוא כלולים בפרויקט.
מה שנקבע כאן הוא הפרמטר שהוגדר ל-appsettings. json . בזמן הפיתוח, הפרמטרים של אותו מפתח הם appsettings. ההגדרות שהוחלפו בפיתוח. json.
במאמר זה, אני רוצה לראות איך הם ממותגים וטעונים.
ערוך כדי לראות כיצד הוא פועל
נסה להוסיף פרמטרים לכל קובץ תצורה כדי לראות כיצד הוא פועל. הוסף מקטע 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 מוצגות.
פיתוח הוא הסיבה מדוע משתני סביבה נטענים כאשר אתה מפעיל יישום עם ASP.NET Core. הפרמטר מוגדר כ- ASPNETCORE_ENVIRONMENT כמו הפרמטר appsettings. XXXX. json קובץ תצורה התואם לחלק ה- XXXX מוטען כעת.
הפיתוח מוגדר בעת איתור באגים, שהוא הכרטיסיה ' איתור באגים ' עבור מאפייני פרוייקט. ניתן לראות שהוא מוגדר במשתנה הסביבה.
אם תנסה לשנות ערך זה לערך אחר ולאתר אותו באגים, אני חושב שהוא אישר כי צד הפיתוח אינו טעון ואת הצד השורש טעון.
דרך אגב, פרמטר זה אינו מופרד באמצעות Debug או Release, כך שאם אתה מבצע איתור באגים באמצעות שחרור, נעשה שימוש בפרמטרי הפיתוח. אין אפשרות להפריד את איתור הבאגים והשחרור, כמו ב-web. config, אך באפשרותך לרשום פרופילים מרובים. באפשרותך לנקוט בפעולה, כגון בדיקת הגדרות השחרור על-ידי החלפה שם.
פריסה והפעלה ב-IIS
מה קורה אם אתה פורס ומפעיל אותו ב-IIS? נסה למעשה ליצור אתר ב-IIS ולפרוס את התוכנית.
זוהי הגדרת הנתיב הצפוי לשימוש. לכן, אם אתה פורס תוכנית ל-IIS, אינך צריך לדאוג לגבי פיתוח הגדרות.
באפשרותך לטעון את קובץ התצורה בזמן ריצה אם יש לך ערך כלשהו במשתנה הסביבה ASPNETCORE_ENVIRONMENT בצד IIS. פתח את עורך התצורה מתוך הגדרות האתר.
מהמקטע, בחר באפשרות Aspnetcore במערכת. webserver.
בחר באפשרות ' יישום מארח. config ' מהמיקום.
פתח את אוסף משתני הסביבה.
הוסף אוסף.
הקלד ASPNETCORE_ENVIRONMENT בשם ולאחר מכן הקלד את שם קובץ התצורה שברצונך לטעון לערך.
אם תפעיל מחדש את האתר ותציג את מסך האינטרנט, תוכל לראות שאתה טוען את קובץ תצורת היעד.
סיכום
אם התצורה ההתחלתית היא האירוע, הגדרות הappsettings. אם הגדרות הפיתוח. json נטענות ונפרסות בסביבת ייצור כגון IIS, אני חושב שזה בסדר. לחשוב שאני מבין את ההגדרות json יהיה טעון.
יש לך רק פיתוח כאשר אתה יוצר פרוייקט, אך באפשרותך ליצור יותר מהגדרות appsettings, ובאפשרותך לשנות את חלק הפיתוח לכל שם. אם יש לך יותר ממיקום ביצוע אחד, לדוגמה, באפשרותך ליצור מיקומים מרובים ולאחר מכן להגדיר ולהפעיל את ASPNETCORE_ENVIRONMENT עבור הסביבה שלך.