.NET .NET Aspire och lansera profiler
.NET .NET Aspire använder startprofiler som definieras i både applikationsvärd- och tjänstprojekten för att förenkla konfigurationen av flera aspekter av felsöknings- och publiceringsmiljön för distribuerade program baserade på .NET.NET Aspire.
Starta grunderna för profil
När du skapar ett nytt .NET program från en mall ser utvecklare ofta en Properties
katalog som innehåller en fil med namnet launchSettings.json. Filen med startinställningar innehåller en lista över startprofiler. Varje startprofil är en samling relaterade alternativ som definierar hur du vill att dotnet
ska starta programmet.
Koden nedan är ett exempel på startprofiler i en launchSettings.json fil för ett ASP.NET Core-program.
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "http://localhost:5130",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "https://localhost:7106;http://localhost:5130",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
startInställningar.json filen ovan definierar två startprofilerhttp
och https
. Var och en har en egen uppsättning miljövariabler, starta URL:er och andra alternativ. När du startar en .NET Core-applikation kan utvecklare välja vilken startprofil som ska användas.
dotnet run --launch-profile https
Om ingen startprofil har angetts väljs den första startprofilen som standard. Det går att starta ett .NET Core-program utan en startprofil med hjälp av alternativet --no-launch-profile
. Vissa fält från startarInställningar.json fil översätts till miljövariabler. Till exempel konverteras fältet applicationUrl
till miljövariabeln ASPNETCORE_URLS
som styr vilken adress och port som ASP.NET Core binder till.
I Visual Studio är det möjligt att välja startprofilen när programmet startas, vilket gör det enkelt att växla mellan konfigurationsscenarier när du felsöker problem manuellt:
När ett .NET program startas med en startprofil fylls en särskild miljövariabel med namnet DOTNET_LAUNCH_PROFILE
med namnet på den startprofil som användes när processen startades.
Starta profiler för .NET.NET Aspire appvärd
I .NET Aspireär AppHost bara ett .NET program. Därför har den en launchSettings.json
fil precis som alla andra program. Här är ett exempel på den launchSettings.json
fil som genereras när du skapar ett nytt .NET.NET Aspire projekt från startmallen (dotnet new aspire-starter
).
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:17134;http://localhost:15170",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21030",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22057"
}
},
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:15170",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19240",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20154"
}
}
}
}
De .NET.NET Aspire mallarna har en mycket lik uppsättning startprofiler som ett vanligt ASP.NET Core program. När .NET.NET Aspire appprojektet startas, startar det en DistributedApplication och hostar en webb-server som används av .NET Aspire Dashboard för att hämta information om resurser som samordnas av .NET Aspire.
Information om konfigurationsalternativ för appvärdar finns i .NET.NET Aspire appvärdkonfiguration.
Relation mellan startprofiler för appvärdar och tjänstprojekt
I .NET.NET Aspire ansvarar appvärden för att samordna lanseringen av flera tjänstprojekt. När du kör appvärden antingen via kommandoraden eller från Visual Studio (eller annan utvecklingsmiljö) väljs en startprofil för appvärden. Appvärden försöker i sin tur hitta en matchande startprofil i de tjänstprojekt som startas och använda dessa alternativ för att styra miljön och standardkonfigurationen för nätverket för tjänstprojektet.
När appvärden startar ett tjänstprojekt startar det inte bara tjänstprojektet med hjälp av alternativet --launch-profile
. Därför kommer det inte att finnas någon DOTNET_LAUNCH_PROFILE
miljövariabeluppsättning för tjänstprojekt. Det beror på att .NET.NET Aspire ändrar ASPNETCORE_URLS
miljövariabeln (härledd från fältet applicationUrl
i startprofilen) för att använda en annan port. Som standard infogar .NET Aspire en omvänd proxy framför ASP.NET Core-programmet för att tillåta flera instanser av programmet med hjälp av metoden WithReplicas.
Andra inställningar, till exempel alternativ från fältet environmentVariables
skickas till programmet utan ändringar.
Kontrollera val av startprofil
Helst är det möjligt att justera startprofilnamnen mellan appvärden och tjänstprojekten för att göra det enkelt att växla mellan konfigurationsalternativ för alla projekt som samordnas av appvärden samtidigt. Det kan dock vara önskvärt att styra startprofilen som ett visst projekt använder. AddProject-utökningmetoden tillhandahåller en mekanism för att göra detta.
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>(
"inventoryservice",
launchProfileName: "mylaunchprofile");
Föregående kod visar att den inventoryservice
resursen (ett .NET projekt) startas med hjälp av alternativen från mylaunchprofile
startprofilen. Prioritetslogik för startprofilen är följande:
- Använd startprofilen som anges av
launchProfileName
argument om det anges. - Använd startprofilen med samma namn som AppHost (bestäms genom att läsa
DOTNET_LAUNCH_PROFILE
miljövariabeln). - Använd standardstartprofilen (första) i launchSettings.json.
- Använd inte en startprofil.
Om du vill tvinga ett tjänstprojekt att starta utan en startprofil kan argumentet launchProfileName
på metoden AddProject anges till null.
Starta profiler och slutpunkter
När du lägger till ett ASP.NET Core-projekt i applikationsvärden kommer .NET Aspire att tolka launchSettings.json-filen och välja lämplig startprofil, och automatiskt generera slutpunkter i programmodellen baserat på URL:erna som finns i fältet applicationUrl
. Så här ändrar du slutpunkterna som automatiskt matas in WithEndpoint-tilläggsmetoden.
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>("inventoryservice")
.WithEndpoint("https", endpoint => endpoint.IsProxied = false);
Föregående kod visar hur du inaktiverar den omvända proxy som .NET Aspire distribuerar framför .NET Core-programmet och i stället tillåter .NET Core-programmet att svara direkt på begäranden via HTTP(S). Mer information om nätverksalternativ i .NET.NET Aspire finns i .NET.NET Aspire översikt över inre loopnätverk.
Se även
.NET Aspire