देखें कि appsettings.json कैसे काम करता है

पेज अद्यतन :
पेज निर्माण की तारीख :

वातावरण

विजुअल स्टूडियो
  • विजुअल स्टूडियो 2019
ASP.NET कोर
  • 3.0
  • 3.1

पहले

जब आप एक नया ASP.NET कोर प्रोजेक्ट बनाते हैं, तो आप appsettings.json और appsettings बना सकते हैं । development.json विन्यास फ़ाइल है परियोजना में शामिल किया गया।

यहां क्या सेट है पैरामीटरappsettings.json के लिए सेट है । विकास के समय, एक ही कुंजी के मापदंडों appsettings हैं । विकास.जैसन में ओवरराइट सेटिंग्स का उपयोग किया जाता है।

image

इस लेख में, मैं देखना चाहता हूं कि वे कैसे बंद और लोड कर रहे हैं ।

यह देखने के लिए संपादित करें कि यह कैसे काम करता है

यह देखने के लिए प्रत्येक विन्यास फ़ाइल में पैरामीटर जोड़ने का प्रयास करें कि यह कैसे काम करता है। हर एक में एक टेस्टऑब्जेक्ट सेक्शन जोड़ें औरटेस्टवैल्यू पैरामीटर जोड़ें।

appsettings.json फ़ाइल शिफ्ट-जेआईएस चरित्र कोड के साथ लिखा गया है, इसलिए यदि आप जापानी शामिल करना चाहते हैं, इसे फिर से यूटीएफ-8 में सहेजें।

ऐपसेटिंग्स.जेसन

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

ऐपिंग्स। विकास.जैसन

{
  "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>

डिबग स्थानीय रूप से चलाता है

परियोजना का निर्माण करें और इसे डिबग करें और ऐपिंग चलाने की कोशिश करें। आप देख सकते हैं कि development.json सेटिंग्स प्रदर्शित कर रहे हैं।

image

विकास का कारण है कि जब आप ASP.NET कोर के साथ एक ऐप चलाते हैं तो पर्यावरण चर लोड होते हैं। पैरामीटर ऐपिंग के रूप में ASPNETCORE_ENVIRONMENT करने के लिए निर्धारित पैरामीटर। XXXX.json XXXX भाग से मेल खाती एक विन्यास फ़ाइल अब भरी हुई है।

डिबगिंग करते समय विकसित होना सेट किया जाता है, जो परियोजना गुणों के लिए डिबग टैब है। आप देख सकते हैं कि यह पर्यावरण चर में सेट है।

image

यदि आप इस मूल्य को एक अलग मूल्य में बदलने और इसे डिबग करने की कोशिश करते हैं, मुझे लगता है कि इस बात की पुष्टि हो जाती है कि विकास पक्ष लोड नहीं है और रूट साइड लोड है ।

image

वैसे, यह पैरामीटर डिबग या रिलीज से अलग नहीं होता है, इसलिए यदि आप रिलीज के साथ डिबग करते हैं, विकास के मापदंडों का उपयोग किया जाता है। Debug और रिलीज अलग नहीं किया जा सकता है, के रूप में web.config में है, लेकिन आप कई प्रोफाइल रजिस्टर कर सकते हैं । आप कार्रवाई कर सकते हैं, जैसे वहां स्विच करके रिलीज सेटिंग्स की जांच करना।

आईआईएस में तैनात और चलाएं

तो क्या होता है अगर आप तैनात है और यह IIS में चलाते हैं? वास्तव में आईआईएस में एक साइट बनाने और कार्यक्रम की तैनाती का प्रयास करें।

image

यह रूट सेटिंग का उपयोग किया जाना है। इसलिए यदि आप आईआईएस के लिए एक कार्यक्रम तैनात कर रहे हैं, तो आपको सेटिंग्स विकसित करने के बारे में चिंता करने की ज़रूरत नहीं है।

image

यदि आपके पास आईआईएस की ओर से ASPNETCORE_ENVIRONMENT पर्यावरण चर में कोई मूल्य है तो आप रन टाइम पर कॉन्फ़िगरेशन फाइल लोड कर सकते हैं। साइट सेटिंग्स से विन्यास संपादक खोलें।

image

सेक्शन से, सिस्टम.वेबसर्वर में aspNetCore चुनें।

image

स्थान से एप्लीकेशनहोस्ट.कॉन्फिग का चयन करें।

image

पर्यावरण चर संग्रह खोलें।

image

एक संग्रह जोड़ें।

image

ASPNETCORE_ENVIRONMENT को नाम से टाइप करें, और फिर उस कॉन्फ़िगरेशन फ़ाइल का नाम टाइप करें जिसे आप मूल्य में लोड करना चाहते हैं।

image

यदि आप साइट को पुनः आरंभ करते हैं और वेब स्क्रीन देखते हैं, तो आप देख सकते हैं कि आप लक्ष्य विन्यास फ़ाइल लोड कर रहे हैं।

image

सारांश

यदि प्रारंभिक विन्यास मामला है, तो ऐपिंग। यदि Development.json सेटिंग्स लोड कर रहे है और इस तरह के IIS के रूप में एक उत्पादन वातावरण में तैनात हैं, मुझे लगता है कि यह लगता है कि appsettings.json लोड किया जाएगा ठीक है ।

आपके पास केवल विकास है जब आप एक परियोजना बनाते हैं, लेकिन आप एक से अधिक ऐपिंग बना सकते हैं, और आप विकास भाग को किसी भी नाम में बदल सकते हैं। उदाहरण के लिए, यदि आपके पास एक से अधिक निष्पादन स्थान हैं, तो आप कई स्थान बना सकते हैं, और फिर अपने पर्यावरण के लिए ASPNETCORE_ENVIRONMENT सेट और संचालित कर सकते हैं।