Δείτε πώς λειτουργεί το appsettings.json

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

Περιβάλλον

Οπτικό Στούντιο
  • Οπτικό Στούντιο 2019
ASP.NET πυρήνας
  • 3.0
  • 3.1

Στην αρχή

Όταν δημιουργείτε ένα νέο έργο ASP.NET Core, μπορείτε να δημιουργήσετε appsettings.json και ρυθμίσεις εφαρμογής. Το αρχείο ρύθμισης παραμέτρων development.json είναι Περιλαμβάνεται στο έργο.

Αυτό που έχει οριστεί εδώ είναι η παράμετρος που έχει οριστεί σεappsettings.json. Κατά τη στιγμή της ανάπτυξης, οι παράμετροι του ίδιου κλειδιού είναι ρυθμίσεις εφαρμογών. Χρησιμοποιούνται οι ρυθμίσεις που αντικαθίστανται στο Development.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 で保存しなおすこと。"
  }
}

Λαμβάνει τις παραμέτρους του αρχείου ρύθμισης παραμέτρων στην ενέργεια Index του 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 Core. Η παράμετρος που έχει οριστεί σε ASPNETCORE_ENVIRONMENT καθώς η παράμετρος είναι οι ρυθμίσεις εφαρμογής. XXXX.json Ένα αρχείο ρύθμισης παραμέτρων που ταιριάζει με το τμήμα XXXX έχει φορτωθεί τώρα.

Η ανάπτυξη έχει οριστεί κατά τον εντοπισμό σφαλμάτων, η οποία είναι η καρτέλα εντοπισμού σφαλμάτων για τις ιδιότητες του έργου. Μπορείτε να δείτε ότι έχει οριστεί στη μεταβλητή περιβάλλοντος.

image

Εάν προσπαθήσετε να αλλάξετε αυτήν την τιμή σε διαφορετική τιμή και να την ξεενοχλήσετε, Νομίζω ότι επιβεβαιώνεται ότι η πλευρά της ανάπτυξης δεν είναι φορτωμένο και η πλευρά της ρίζας είναι φορτωμένο.

image

Με την ευκαιρία, αυτή η παράμετρος δεν διαχωρίζεται από τον εντοπισμό σφαλμάτων ή την αποδέσμευση, οπότε εάν κάνετε εντοπισμό σφαλμάτων με την release, Χρησιμοποιούνται οι παράμετροι ανάπτυξης. Δεν είναι δυνατός ο διαχωρισμός του εντοπισμού σφαλμάτων και της έκδοσης, όπως στο web.config, αλλά μπορείτε να καταχωρήσετε πολλά προφίλ. Μπορείτε να κάνετε κάποια ενέργεια, όπως να ελέγξετε τις ρυθμίσεις έκδοσης αλλάζοντας εκεί.

Ανάπτυξη και εκτέλεση στις iIS

Τι θα συμβεί αν το αναπτύξετε και το εκτελέσετε στις IIS; Δοκιμάστε να δημιουργήσετε μια τοποθεσία στις iIS και να αναπτύξετε το πρόγραμμα.

image

Αυτή είναι η ρύθμιση διαδρομής που θα χρησιμοποιηθεί. Έτσι, εάν αναπτύσσετε ένα πρόγραμμα στις iIS, δεν χρειάζεται να ανησυχείτε για την ανάπτυξη ρυθμίσεων.

image

Μπορείτε να φορτώσετε το αρχείο ρύθμισης παραμέτρων κατά το χρόνο εκτέλεσης, εάν έχετε οποιαδήποτε τιμή στη μεταβλητή περιβάλλοντος ASPNETCORE_ENVIRONMENT από την πλευρά των υπηρεσιών IIS. Ανοίξτε το πρόγραμμα επεξεργασίας παραμέτρων από τις ρυθμίσεις τοποθεσίας.

image

Από την ενότητα, επιλέξτε aspNetCore στο system.webServer.

image

Επιλέξτε ApplicationHost.config από τη θέση.

image

Ανοίξτε τη συλλογή περιβάλλονΤοςΜεταβλητές.

image

Προσθέστε μια συλλογή.

image

Πληκτρολογήστε ASPNETCORE_ENVIRONMENT στο όνομα και, στη συνέχεια, πληκτρολογήστε το όνομα του αρχείου ρύθμισης παραμέτρων που θέλετε να φορτώσετε στην τιμή.

image

Εάν επανεκκινήσετε την τοποθεσία και προβάλετε την οθόνη Web, μπορείτε να δείτε ότι φορτώνετε το αρχείο ρύθμισης παραμέτρων προορισμού.

image

Περίληψη

Εάν συμβαίνει η αρχική ρύθμιση παραμέτρων, οι ρυθμίσεις εφαρμογής. Εάν οι ρυθμίσεις Development.json φορτώνονται και αναπτύσσονται σε ένα περιβάλλον παραγωγής, όπως οι υπηρεσίες IIS, Νομίζω ότι είναι εντάξει να πιστεύουμε ότι appsettings.json θα φορτωθεί.

Έχετε ανάπτυξη μόνο όταν δημιουργείτε ένα έργο, αλλά μπορείτε να δημιουργήσετε περισσότερες από μία ρυθμίσεις εφαρμογών και μπορείτε να αλλάξετε το τμήμα Ανάπτυξης σε οποιοδήποτε όνομα. Εάν έχετε περισσότερες από μία θέσεις εκτέλεσης, για παράδειγμα, μπορείτε να δημιουργήσετε πολλές θέσεις και, στη συνέχεια, να ορίσετε και να λειτουργήσει ASPNETCORE_ENVIRONMENT για το περιβάλλον σας.