Udostępnij za pośrednictwem


profile .NET.NET Aspire i profil uruchamiania

.NET .NET Aspire korzysta z profilów uruchamiania zdefiniowanych zarówno w projektach hosta aplikacji, jak i usługi, aby uprościć proces konfigurowania wielu aspektów środowiska debugowania i publikowania dla aplikacji rozproszonych opartych na .NET.NET Aspire.

Podstawy uruchamiania profilu

Podczas tworzenia nowej aplikacji .NET z szablonu, deweloperzy często zobaczą katalog Properties zawierający plik o nazwie launchSettings.json. Plik ustawień uruchamiania zawiera listę profilów uruchamiania . Każdy profil uruchamiania jest zbiorem powiązanych opcji, które określają, w jaki sposób chcesz, aby dotnet uruchamiał Twoją aplikację.

Poniższy kod to przykład profili uruchamiania w pliku launchSettings.json dla aplikacji ASP.NET Core.

{
  "$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"
      }
    }
  }
}

Plik launchSettings.json definiuje powyżej dwa profile uruchamiania: , http i https. Każdy z nich ma własny zestaw zmiennych środowiskowych, adresów URL uruchamiania i innych opcji. Podczas uruchamiania .NET Core deweloperzy aplikacji mogą wybrać profil uruchamiania do użycia.

dotnet run --launch-profile https

Jeśli nie określono profilu uruchamiania, domyślnie jest wybierany pierwszy profil uruchamiania. Można uruchomić aplikację .NET Core bez profilu uruchamiania przy użyciu opcji --no-launch-profile. Niektóre pola z pliku launchSettings.json są tłumaczone na zmienne środowiskowe. Na przykład pole applicationUrl jest konwertowane na zmienną środowiskową ASPNETCORE_URLS, która kontroluje, z którym adresem i portem ASP.NET Core jest powiązana.

W Visual Studio można wybrać profil uruchamiania podczas uruchamiania aplikacji, co ułatwia przełączanie się między scenariuszami konfiguracji podczas ręcznego debugowania problemów:

Zrzut ekranu przedstawiający standardowy pasek narzędzi w Visual Studio z wyróżnionym selektorem profilu uruchamiania.

Po uruchomieniu aplikacji .NET z profilem uruchamiania zostanie wypełniona specjalna zmienna środowiskowa o nazwie DOTNET_LAUNCH_PROFILE nazwą profilu uruchamiania, który został użyty podczas uruchamiania procesu.

Uruchamianie profilów dla hosta aplikacji .NET.NET Aspire

W .NET AspireAppHost to po prostu aplikacja .NET. W rezultacie ma on plik launchSettings.json tak samo jak każda inna aplikacja. Oto przykład pliku launchSettings.json wygenerowanego podczas tworzenia nowego projektu .NET.NET Aspire na podstawie szablonu początkowego (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"
      }
    }
  }
}

Szablony .NET.NET Aspire mają bardzo podobny zestaw profilów uruchamiania do zwykłej aplikacji ASP.NET Core. Gdy projekt aplikacji .NET.NET Aspire zostanie uruchomiony, uruchamia DistributedApplication i hostuje internetowyserver, który jest używany przez pulpit nawigacyjny .NET Aspire do pozyskiwania informacji o zasobach, które są orkiestrowane przez .NET Aspire.

Aby uzyskać informacje na temat opcji konfiguracji hosta aplikacji, zobacz .NET.NET Aspire konfiguracja hosta aplikacji.

Relacja między profilami uruchamiania hosta aplikacji a projektami usługowymi

W .NET.NET Aspire host aplikacji jest odpowiedzialny za koordynowanie uruchamiania wielu projektów usług. Gdy uruchamiasz hosta aplikacji przez wiersz poleceń lub z Visual Studio (lub innego środowiska programistycznego), wybrany jest profil startowy dla hosta aplikacji. Z kolei host aplikacji podejmie próbę znalezienia pasującego profilu uruchamiania w projektach usługi, które uruchamia, i użyje tych opcji, aby kontrolować środowisko i domyślną konfigurację sieci dla projektu usługi.

Gdy host aplikacji uruchamia projekt usługi, nie uruchamia projektu usługi przy użyciu opcji --launch-profile. W związku z tym zmienna środowiskowa DOTNET_LAUNCH_PROFILE nie będzie ustawiona dla projektów usługowych. Dzieje się tak, ponieważ .NET.NET Aspire modyfikuje zmienną środowiskową ASPNETCORE_URLS (pochodzącą z pola applicationUrl w profilu uruchamiania), aby użyć innego portu. Domyślnie .NET Aspire wstawia zwrotny serwer proxy przed aplikację ASP.NET Core, aby umożliwić korzystanie z kilku instancji aplikacji przy użyciu metody WithReplicas.

Inne ustawienia, takie jak opcje z pola environmentVariables, są przekazywane do aplikacji bez modyfikacji.

Kontrolowanie wyboru profilu uruchamiania

W idealnym przypadku można dopasować nazwy profilów uruchamiania między hostem aplikacji a projektami usług, aby ułatwić przełączanie się między opcjami konfiguracji we wszystkich projektach koordynowanych przez hosta aplikacji jednocześnie. Jednak może być pożądane kontrolowanie profilu uruchamiania używanego przez określony projekt. Metoda rozszerzenia AddProject udostępnia mechanizm w tym celu.

var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>(
    "inventoryservice",
    launchProfileName: "mylaunchprofile");

Powyższy kod pokazuje, że zasób inventoryservice (projekt .NET) jest uruchamiany przy użyciu opcji z profilu uruchamiania mylaunchprofile. Logika pierwszeństwa profilu uruchamiania jest następująca:

  1. Jeśli jest określony, użyj profilu uruchamiania wskazanego przez argument launchProfileName.
  2. Użyj profilu uruchamiania o takiej samej nazwie jak AppHost (określony przez odczytanie zmiennej środowiskowej DOTNET_LAUNCH_PROFILE).
  3. Użyj domyślnego (pierwszego) profilu uruchamiania w launchSettings.json.
  4. Nie używaj profilu uruchamiania.

Aby wymusić uruchomienie projektu usługi bez profilu uruchamiania, można ustawić argument launchProfileName w metodzie AddProject na wartość null.

Uruchamianie profili i punktów końcowych

Podczas dodawania projektu ASP.NET Core do hosta aplikacji .NET Aspire przeanalizuje ustawienia uruchamiania json, wybierając odpowiedni profil uruchamiania, a następnie automatycznie wygeneruje punkty końcowe w modelu aplikacji na podstawie adresów URL podanych w polu applicationUrl. Aby zmodyfikować punkty końcowe, które są automatycznie wstrzykiwane w metodzie rozszerzenia WithEndpoint.

var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>("inventoryservice")
       .WithEndpoint("https", endpoint => endpoint.IsProxied = false);

Powyższy kod pokazuje, jak wyłączyć zwrotny serwer proxy, który .NET Aspire wdraża przed aplikacją .NET Core, a zamiast tego umożliwia aplikacji .NET Core odpowiadanie bezpośrednio na żądania za pośrednictwem protokołu HTTP(S). Aby uzyskać więcej informacji na temat opcji sieciowania w .NET.NET Aspire, zobacz omówienie sieciowania wewnętrznej pętli .NET.NET Aspire.

Zobacz też