Wie übergeben Sie Daten in startup.cs? DieseÜbergeben Sie Daten an startup.cs
ist für die Prüfung Integration mit WebHostBuilder
und TestServer
Ich muss verschiedene Daten übergeben, je nach dem Testadapter. Also nicht wollen, ziehen Sie es in einer Konfigurationsdatei, zum Beispiel
Die Daten werden an einen registrierten Middleware in startup.cs geliefert werden
Docs scheinen dies vorschlagen sollte funktionieren:
var configBuilder = new ConfigurationBuilder()
.AddInMemoryCollection(new[]
{
new KeyValuePair<string, string>("key", "value"),
});
var configuration = configBuilder.Build();
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseConfiguration(configuration) // config added here
.UseStartup<Startup>()
.Build();
host.Run();
aber wenn ich das Configuration-Objekt in startup.cs inspiziere, ist der Schlüssel nicht vorhanden. Und nur die in startup.cs definierten Provider sind verfügbar.
ich dies versuche zur Zeit in Program.cs zu tun, um das Konzept zu testen, wird dann später zu Integrationstests bewegen
irgendwelche Ideen, was mache ich falsch?
Gibt es eine bessere Möglichkeit, Daten in den Startup zu übergeben?
Die Konfiguration in 'Main' und' Startup' ist völlig anders, sie sprechen nicht miteinander. Was auch immer Sie hier einstellen, ist nur für den Web-Host-Setup. Aber wie man Daten an das 'Startup' sendet, ist eine andere Sache. Willst du es im Konstruktor oder 'Configure' oder anderswo? –
Ich brauche es in Configure, wenn ich eine bestimmte Middleware, aber der Konstruktor wäre auch in Ordnung – ChrisCa
Sie können einen 'Service' für die Abhängigkeitsinjektion in der' Main' tatsächlich hinzufügen, vielleicht würde das funktionieren? Ich kann ein Beispiel als Antwort hinzufügen, wenn das passend wäre. Es könnte beispielsweise ein Singleton mit den gewünschten Daten sein. –