Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A környezetek kontextust biztosítanak az alkalmazás futtatásához. A paraméterek azt a képességet fejezik ki, hogy külső értéket kérhetnek az alkalmazás futtatásakor. A paraméterekkel értékeket adhat meg az alkalmazásnak helyi futtatáskor, vagy az üzembe helyezéskor is kérheti az értékek megadását. Számos forgatókönyv modellezésére használhatók, beleértve a titkos kulcsokat, a kapcsolati sztringeket és más konfigurációs értékeket, amelyek környezetenként eltérőek lehetnek.
Paraméterértékek
A paraméterértékek az Parameters AppHost konfigurációjának szakaszából vannak beolvasva, és a helyi futtatás során az alkalmazás értékeinek megadására szolgálnak. Az alkalmazás futtatásakor vagy közzétételekor, ha az érték nincs konfigurálva, a rendszer kérni fogja annak megadását.
Tekintse meg a következő példa AppHost-fájlt AppHost.cs :
var builder = DistributedApplication.CreateBuilder(args);
// Add a parameter named "example-parameter-name"
var parameter = builder.AddParameter("example-parameter-name");
builder.AddProject<Projects.ApiService>("api")
.WithEnvironment("ENVIRONMENT_VARIABLE_NAME", parameter);
Az előző kód hozzáad egy, az AppHosthoz elnevezett example-parameter-name paramétert. A paraméter ezután egy Projects.ApiServicenevű környezeti változóként továbbítja a ENVIRONMENT_VARIABLE_NAME projektnek.
Paraméterértékek konfigurálása
A paraméterek hozzáadása a builderhez csak egy része a konfigurációnak. Meg kell adnia a paraméter értékét is. Az érték megadható az AppHost konfigurációs fájlban, beállítható felhasználói titkos kódként, vagy bármely más szabványos konfigurációban konfigurálható. Ha a paraméterértékek nem találhatók, a rendszer az alkalmazás futtatásakor vagy közzétételekor kéri őket.
Vegye figyelembe a következő AppHost-konfigurációs fájlt appsettings.json:
{
"Parameters": {
"example-parameter-name": "local-value"
}
}
Az előző JSON egy paramétert konfigurál az Parameters AppHost-konfiguráció szakaszában. Más szóval, hogy az AppHost képes megtalálni a paramétert a konfigurált módon. Például felsétálhat a IDistributedApplicationBuilder.Configuration-hoz, és a Parameters:example-parameter-name kulccsal hozzáférhet az értékhez.
var builder = DistributedApplication.CreateBuilder(args);
var key = $"Parameters:example-parameter-name";
var value = builder.Configuration[key]; // value = "local-value"
Important
Ehhez a konfigurációs értékhez azonban nem kell saját maga hozzáférnie az AppHostban. Ehelyett a ParameterResource a paraméterérték függő erőforrásoknak való átadására szolgál. Leggyakrabban környezeti változóként.
Paraméterértékek kérése az irányítópulton
Ha a kód paramétereket ad hozzá, de nem állítja be őket, megjelenik egy üzenet, amely az értékek konfigurálását kéri az Aspire irányítópulton. Megjelenik a Megoldatlan paraméterek üzenet, és az Enter értékeket választva megoldhatja a problémát:
Amikor az Enter értékeket választja, megjelenik egy űrlap, Aspire amellyel az egyes hiányzó paraméterek értékeit konfigurálhatja.
A következő módszerekkel azt is szabályozhatja, hogy az irányítópult hogyan jeleníti meg ezeket a paramétereket:
-
WithDescription: Ezzel a módszerrel szöveges leírást adhat meg, amely segít a felhasználóknak megérteni a paraméter célját. Ha formázott leírást szeretne megadni a Markdownban, használja aenableMarkdown: trueparamétert. -
WithCustomInput: Ezzel a módszerrel olyan visszahívási módszert adhat meg, amely testre szabja a paraméter párbeszédpanelét. Ebben a visszahívásban például testre szabhatja az alapértelmezett értéket, bemeneti típust, címkét és helyőrző szöveget.
Ez a kód bemutatja, hogyan állíthat be leírást, és hogyan használhatja a visszahívást:
#pragma warning disable ASPIREINTERACTION001 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
var externalServiceUrl = builder.AddParameter("external-service-url")
.WithDescription("The URL of the external service.")
.WithCustomInput(p => new()
{
InputType = InputType.Text,
Value = "https://example.com",
Name = p.Name,
Placeholder = $"Enter value for {p.Name}",
Description = p.Description
});
var externalService = builder.AddExternalService("external-service", externalServiceUrl);
#pragma warning restore ASPIREINTERACTION001
A kód a következő vezérlőt jeleníti meg az irányítópulton:
Note
Az irányítópult paraméter párbeszédpaneljén megjelenik a Mentés a felhasználó titkos kódjába jelölőnégyzet. Ezzel a beállítással bizalmas értékeket tárolhat az AppHost felhasználói titkos kulcsaiban a további védelem érdekében. A titkos paraméterek értékeivel kapcsolatos további információkért tekintse meg a Titkos értékek című témakört.
Paraméterábrázolás a jegyzékben
Aspire Az alkalmazás erőforrásait és kapcsolatait egy üzembehelyezési jegyzék használatával jeleníti meg. A paraméterek a jegyzékben parameter.v0nevű új primitívként jelennek meg:
{
"resources": {
"example-parameter-name": {
"type": "parameter.v0",
"value": "{value.inputs.value}",
"inputs": {
"value": {
"type": "string"
}
}
}
}
}
Titkos értékek
A paraméterek a titkos kulcsok modellezésére használhatók. Ha egy paraméter titkosként van megjelölve, az arra utal a jegyzékben, hogy az értéket titkos kódként kell kezelni. Az alkalmazás közzétételekor a rendszer kéri az értéket, és biztonságos helyen tárolja. Amikor helyileg futtatja az alkalmazást, az érték az Parameters AppHost konfigurációjának szakaszából lesz beolvasva.
Tekintse meg a következő példa AppHost-fájlt AppHost.cs :
var builder = DistributedApplication.CreateBuilder(args);
// Add a secret parameter named "secret"
var secret = builder.AddParameter("secret", secret: true);
builder.AddProject<Projects.ApiService>("api")
.WithEnvironment("SECRET", secret);
builder.Build().Run();
Most vegye figyelembe a következő AppHost-konfigurációs fájlt appsettings.json:
{
"Parameters": {
"secret": "local-secret"
}
}
A jegyzék a következő:
{
"resources": {
"value": {
"type": "parameter.v0",
"value": "{value.inputs.value}",
"inputs": {
"value": {
"type": "string",
"secret": true
}
}
}
}
}
Kapcsolati karaktersor értékei
Paraméterekkel modellezheti a kapcsolati sztringeket. Az alkalmazás közzétételekor a rendszer kéri az értéket, és biztonságos helyen tárolja. Amikor helyileg futtatja az alkalmazást, az érték az ConnectionStrings AppHost konfigurációjának szakaszából lesz beolvasva.
Note
A kapcsolati sztringek a kapcsolati információk széles skáláját jelölik, beleértve az adatbázis-kapcsolatokat, az üzenetközvetítőket, a végponti URI-kat és más szolgáltatásokat. A nómenklatúrában Aspire a "kapcsolati sztring" kifejezés bármilyen kapcsolati információt jelöl.
Tekintse meg a következő példa AppHost-fájlt AppHost.cs :
var builder = DistributedApplication.CreateBuilder(args);
var redis = builder.AddConnectionString("redis");
builder.AddProject<Projects.WebApplication>("api")
.WithReference(redis)
.WaitFor(redis);
builder.Build().Run();
Note
A WaitFor kapcsolati sztring használata implicit módon megvárja azt az erőforrást, amelyhez a kapcsolati sztring csatlakozik.
Most vegye figyelembe a következő AppHost-konfigurációs fájlt appsettings.json:
{
"ConnectionStrings": {
"redis": "local-connection-string"
}
}
A kapcsolati sztringekkel és azok üzembe helyezési jegyzékben való megjelenítésével kapcsolatos további információkért lásd: Kapcsolati sztringek és kötési hivatkozások.
Kapcsolati sztringek létrehozása referenciakifejezésekkel
Ha paraméterekből szeretne kapcsolati sztringet létrehozni, és biztosítani szeretné, hogy az megfelelően legyen kezelve fejlesztési és éles környezetben egyaránt, használja a AddConnectionString-t egy ReferenceExpression-tel.
Ha például van egy titkos paramétere, amely egy kapcsolati sztring egy kis részét tárolja, a következő kóddal szúrhatja be:
var secretKey = builder.AddParameter("secretkey", secret: true);
var connectionString = builder.AddConnectionString(
"composedconnectionstring",
ReferenceExpression.Create($"Endpoint=https://api.contoso.com/v1;Key={secretKey}"));
builder.AddProject<Projects.AspireReferenceExpressions_CatalogAPI>("catalogapi")
.WithReference(connectionString)
.WaitFor(connectionString);
Hivatkozási kifejezések használatával szöveget fűzhet az Aspire erőforrások által létrehozott kapcsolatokhoz. Ha például hozzáad egy erőforrást PostgreSQL a Aspire megoldáshoz, az adatbázis-kiszolgáló egy tárolóban fut, és kapcsolati láncot kialakítanak hozzá. A következő kódban a rendszer hozzáfűzi a további tulajdonságot Include Error Details a kapcsolati sztringhez, mielőtt az átkerül a projektekbe:
var postgres = builder.AddPostgres("postgres");
var database = postgres.AddDatabase("db");
var pgConnectionString = builder.AddConnectionString(
"pgdatabase",
ReferenceExpression.Create($"{database};Include Error Details=true"));
builder.AddProject<Projects.AspireReferenceExpressions_CustomerAPI>("customerapi")
.WithReference(pgConnectionString)
.WaitFor(pgConnectionString);
Paraméter példa
Egy paraméter kifejezéséhez vegye figyelembe a következő példakódot:
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddSqlServer("sql")
.PublishAsConnectionString()
.AddDatabase("db");
var insertionRows = builder.AddParameter("insertionRows");
builder.AddProject<Projects.Parameters_ApiService>("api")
.WithEnvironment("InsertionRows", insertionRows)
.WithReference(db);
builder.Build().Run();
A következő lépéseket hajtja végre:
- Hozzáad egy SQL Server
sqlnevű erőforrást, amelyet karakterláncként tesz közzé kapcsolati formában. - Hozzáad egy
dbnevű adatbázist. - Hozzáad egy
insertionRowsnevű paramétert. - Hozzáad egy
apinevű projektet, és társítja aProjects.Parameters_ApiServiceprojekt erőforrástípus-paraméterével. - Átadja a
insertionRowsparamétert aapiprojektnek. - A
dbadatbázisra hivatkozik.
A insertionRows paraméter értékét az Parameters szakaszából olvassa be a rendszer az AppHost konfigurációs fájljának appsettings.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Aspire.Hosting.Dcp": "Warning"
}
},
"Parameters": {
"insertionRows": "1"
}
}
A Parameters_ApiService projekt a insertionRows paramétert használja. Fontolja meg a Program.cs példafájlt:
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
int insertionRows = builder.Configuration.GetValue<int>("InsertionRows", 1);
builder.AddServiceDefaults();
builder.AddSqlServerDbContext<MyDbContext>("db");
var app = builder.Build();
app.MapGet("/", async (MyDbContext context) =>
{
// You wouldn't normally do this on every call,
// but doing it here just to make this simple.
context.Database.EnsureCreated();
for (var i = 0; i < insertionRows; i++)
{
var entry = new Entry();
await context.Entries.AddAsync(entry);
}
await context.SaveChangesAsync();
var entries = await context.Entries.ToListAsync();
return new
{
totalEntries = entries.Count,
entries
};
});
app.Run();