Sdílet prostřednictvím


Externí parametry

Prostředí poskytují kontext pro spuštění aplikace. Parametry vyjadřují možnost požádat o externí hodnotu při spuštění aplikace. Parametry se dají použít k zadání hodnot aplikaci při místním spuštění nebo k zobrazení výzvy k zadání hodnot při nasazování. Dají se použít k modelování široké škály scénářů, včetně tajných kódů, připojovacích řetězců a dalších hodnot konfigurace, které se můžou mezi prostředími lišit.

Hodnoty parametrů

Hodnoty parametrů se čtou z části Parameters konfigurace hostitele aplikace a slouží k zadání hodnot aplikaci při místním spuštění. Pokud při publikování aplikace není nakonfigurovaná hodnota, zobrazí se výzva k jejímu zadání.

Podívejte se na následující příklad souboru hostitele aplikace Program.cs:

var builder = DistributedApplication.CreateBuilder(args);

// Add a parameter named "value"
var value = builder.AddParameter("value");

builder.AddProject<Projects.ApiService>("api")
       .WithEnvironment("EXAMPLE_VALUE", value);

Předchozí kód přidá do hostitele aplikace parametr s názvem value. Parametr je pak jako proměnná prostředí s názvem EXAMPLE_VALUEpředán projektu Projects.ApiService.

Konfigurace hodnot parametrů

Přidání parametrů do konstruktéru je pouze jedním aspektem konfigurace. Musíte také zadat hodnotu parametru. Hodnotu lze zadat v konfiguračním souboru hostitele aplikace, nastavit jako tajný klíč uživatele nebo nakonfigurovat v libovolném jiné standardní konfigurační. Pokud se hodnoty parametrů nenašly, zobrazí se výzva k zadání při publikování aplikace.

Zvažte následující konfigurační soubor hostitele aplikace appsettings.json:

{
    "Parameters": {
        "value": "local-value"
    }
}

Předchozí JSON nakonfiguruje parametr v části Parameters konfigurace hostitele aplikace. Jinými slovy, hostitel aplikace dokáže najít parametr jako nakonfigurovaný. Můžete například přejít k IDistributedApplicationBuilder.Configuration a získat přístup k hodnotě pomocí klíče Parameters:value:

var builder = DistributedApplication.CreateBuilder(args);

var key = $"Parameters:value";
var value = builder.Configuration[key]; // value = "local-value"

Důležitý

K této konfigurační hodnotě ale nemusíte přistupovat sami v hostiteli aplikace. Místo toho se ParameterResource používá k předání hodnoty parametru závislým prostředkům. Nejčastěji se jedná o proměnnou prostředí.

Reprezentace parametrů v manifestu

.NET .NET Aspire používá manifest nasazení k reprezentaci prostředků aplikace a jejich vztahů. Parametry jsou v manifestu reprezentovány jako nový primitivní název parameter.v0:

{
  "resources": {
    "value": {
      "type": "parameter.v0",
      "value": "{value.inputs.value}",
      "inputs": {
        "value": {
          "type": "string"
        }
      }
    }
  }
}

Tajné hodnoty

Parametry lze použít k modelování tajných kódů. Pokud je parametr označený jako tajný kód, slouží jako nápověda manifestu, že hodnota by měla být považována za tajný kód. Když aplikaci publikujete, budete vyzváni k zadání hodnoty, která bude uložena v zabezpečeném umístění. Při místním spuštění aplikace se hodnota načte z části Parameters konfigurace hostitele aplikace.

Podívejte se na následující příklad souboru hostitele aplikace Program.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();

Nyní zvažte následující konfigurační soubor hostitele aplikace appsettings.json:

{
    "Parameters": {
        "secret": "local-secret"
    }
}

Reprezentace manifestu je následující:

{
  "resources": {
    "value": {
      "type": "parameter.v0",
      "value": "{value.inputs.value}",
      "inputs": {
        "value": {
          "type": "string",
          "secret": true
        }
      }
    }
  }
}

Hodnoty připojovacího řetězce

Parametry lze použít k modelování připojovacích řetězců. Při publikování aplikace se zobrazí výzva k zadání hodnoty, která je poté uložena na zabezpečeném místě. Při místním spuštění aplikace se hodnota načte z části ConnectionStrings konfigurace hostitele aplikace.

Poznámka

Připojovací řetězce se používají k reprezentaci široké škály informací o připojení, včetně databázových připojení, zprostředkovatelů zpráv, identifikátorů URI koncových bodů a dalších služeb. V .NET.NET Aspire terminologii se výraz "připojovací řetězec" používá k reprezentaci jakéhokoli druhu informací o připojení.

Podívejte se na následující příklad souboru hostitele aplikace Program.cs:

var builder = DistributedApplication.CreateBuilder(args);

var redis = builder.AddConnectionString("redis");

builder.AddProject<Projects.WebApplication>("api")
       .WithReference(redis);

builder.Build().Run();

Nyní zvažte následující konfigurační soubor hostitele aplikace appsettings.json:

{
    "ConnectionStrings": {
        "redis": "local-connection-string"
    }
}

Další informace týkající se připojovacích řetězců a jejich reprezentace v manifestu nasazení naleznete v části Připojovací řetězce a odkazy na vazby.

Příklad parametru

Pokud chcete vyjádřit parametr, zvažte následující ukázkový kód:

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();

Provede se následující kroky:

  • Přidá prostředek SQL Server s názvem sql a publikuje ho jako připojovací řetězec.
  • Přidá databázi s názvem db.
  • Přidá parametr s názvem insertionRows.
  • Přidá projekt s názvem api a přidruží ho k parametru typu zdroje projektu Projects.Parameters_ApiService.
  • Předá parametr insertionRows projektu api.
  • Odkazuje na databázi db.

Hodnota parametru insertionRows se načte z části Parameters konfiguračního souboru hostitele aplikace appsettings.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Aspire.Hosting.Dcp": "Warning"
    }
  },
  "Parameters": {
    "insertionRows": "1"
  }
}

Projekt Parameters_ApiService využívá parametr insertionRows. Podívejte se na ukázkový soubor Program.cs:

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();

Viz také