Megosztás a következőn keresztül:


Külső paraméterek

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:

Képernyőkép az Aspire irányítópult figyelmeztetéséről, amely megoldatlan paraméterek esetén jelenik meg.

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 a enableMarkdown: true paramé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:

Képernyőkép az Aspire irányítópult paraméterkiegészítési párbeszédpaneléről testreszabásokkal.

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 Serversql nevű 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 api nevű projektet, és társítja a Projects.Parameters_ApiService projekt erőforrástípus-paraméterével.
  • Átadja a insertionRows paramétert a api projektnek.
  • A db adatbá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();

Lásd még