Wie können wir Konfigurationsdaten in neuen asp.net vnext speichern? web.config immer noch da (system.web entfernt, also keine web.config, aber ich mag es) oder neue json-Datei für Konfigurationsdaten verwenden.Wie können wir Konfigurationsdaten in neuen asp.net vnext speichern?
Antwort
Nicht sicher, welche Art von Daten Sie speichern möchten, aber das funktioniert für mich. Ich habe diese Datei myconfig.json erstellt und die Daten, die ich brauche, in einem JSON-Format gespeichert.
Dies wird Ihre Konfigurationsdatei registrieren, ich habe diesen Code in der startup.cs-Seite hinzugefügt.
Configuration = new Configuration()
.AddJsonFile("config.json")
.AddJsonFile("myconfig.json")
.AddEnvironmentVariables();
die Daten erhalten, die Sie aus der JSON-Datei benötigen Sie an einer beliebigen Stelle auf Ihrem Code dies benötigen.
IConfiguration Configuration = new Configuration().AddJsonFile("myconfig.json");
var jsonNodes = Configuration.Get("SomeJsonNode");
string someJsonString = Configuration.Get("someJsonString");
FYI: In dem Moment, dass ich getestet, dass Code-JSON-Array nicht unterstützt wurden. Nicht sicher, ob sie das jetzt behoben haben.
Die am besten verwendete Konfiguration ist ein Ausgangspunkt für stark typisierte Optionen. Also, was Sie beim Start tun wollen, registrieren Sie ein Options-Objekt, richten Sie es mit Daten ein, die Sie aus der Konfiguration gelesen haben, und holen Sie es aus dem DI-System in den Rest Ihres Codes.
Beispiel:
Neue Optionen Objekt
public class ApplicationOptions
{
public bool MyOption { get; set; }
}
Lesen Sie die Konfiguration und Einrichtung der Optionen Objekt dann registrieren sie in DI
public void Configure(IApplicationBuilder app)
{
// rest of setup
var applicationOptions = new ApplicationOptions();
string myOption;
if (configuration.TryGet("MyOption", out myOption) &&
myOption.Equals("True", StringComparison.OrdinalIgnoreCase))
{
applicationOptions.MyOption = true;
}
// For the scenario above also the code below will work.
// It is currently limited to desktop (ASPNET50, NET45) only.
// services.Configure<ApplicationOptions>(configuration);
services.AddInstance<ApplicationOptions>(applicationOptions);
// more setup
}
und löst es in Ihrem Code
public class MyController : Controller
{
public IActionResult Index(ApplicationOptions options)
{
// do something with the options
}
}
Edit: mit jedem praktischen wiederverwendbaren Optionen-Objekt, der Code-Setup wird wahrscheinlich passieren außerhalb der Startup-Klasse.
Optionen! = Konfiguration speichert. Auch in diesem Beispiel, was ist "diSystem", und warum würden Sie manuell aus der Konfiguration lesen? Werden Optionen nicht automatisch aus der Konfiguration gelesen? Welchen Wert haben die Optionen, die hier hinzugefügt werden? In der Tat verwendet dieses Beispiel sogar Optionen? – Eilon
1. Optionen ist die stark typisierte Möglichkeit, Konfigurationsdaten zu übergeben. Der Wert besteht darin, dass Sie die Optionen von DI an jeder anderen Stelle in Ihrer App in stark typisierter Weise abrufen können, ohne das Configuration-Objekt neu erstellen zu müssen.Also ja, sie sind nicht gleich, aber aus praktischen Gründen ist das der richtige Weg. 2. Optionen nicht direkt von der Konfiguration lesen, müssen Sie den Code übergeben schreiben (entweder wie in diesem Beispiel oder in einem anderen Verfahren) –
Geklärte die Antwort –
In den Bruch Änderungen (Beta 6), geändert Microsoft.Framework.ConfigurationModel Montage Namen Microsoft.Framework.Configuration Dies ist die modifizierte Startklasse
public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
var configurationBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath).
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = configurationBuilder.Build();
}
Danke, habe ich es .wir können unsere Einstellung in JSON-Datei speichern und wir können überall im Code abrufen, wie wir es in web.config getan haben. –
kein Problem, ich habe einige Blog gelesen und sie erwähnen, dass, wenn Sie App-Variablen benötigen, ist gut, so dass aber wenn Sie Verbindungsstrings und andere Geheimnisse Variablen speichern ist besser zu verwenden Umgebungsvariablen, wenn Sie azur das Portal hat eine nette Schnittstelle, um diese hinzuzufügen. Bitte, wenn Sie die Frage als Antwort markieren können –
Beachten Sie, dass Sie "myconfig.json" nicht hinzufügen müssen, "config.json" ist für Ihre Verwendung. –