ASP.NET Core-alkalmazás konfigurálása Azure App Service

Megjegyzés

A .NET-keretrendszer ASP.NET lásd: ASP.NET-alkalmazás konfigurálása Azure App Service. Ha a ASP.NET Core-alkalmazás egyéni Windows- vagy Linux-tárolóban fut, lásd: Egyéni tároló konfigurálása Azure App Service.

ASP.NET Core alkalmazásokat lefordított bináris fájlokként kell üzembe helyezni Azure App Service. A Visual Studio közzétételi eszköze létrehozza a megoldást, majd közvetlenül telepíti a lefordított bináris fájlokat, míg a App Service üzembehelyezési motor először üzembe helyezi a kódtárat, majd lefordítja a bináris fájlokat.

Ez az útmutató alapvető fogalmakat és utasításokat tartalmaz ASP.NET Core fejlesztők számára. Ha még soha nem használta Azure App Service, először kövesse ASP.NET Core rövid útmutatót, és ASP.NET Core SQL Database oktatóanyaggal.

Támogatott .NET Core-futtatókörnyezeti verziók megjelenítése

A App Service a Windows-példányokon már telepítve van az összes támogatott .NET Core-verzió. Az elérhető .NET Core-futtatókörnyezet és SDK-verziók megjelenítéséhez keresse meg https://<app-name>.scm.azurewebsites.net/DebugConsole és futtassa a következő parancsot a böngészőalapú konzolon:

dotnet --info

.NET Core-verzió megjelenítése

Az aktuális .NET Core-verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shell:

az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion

Az összes támogatott .NET Core-verzió megjelenítéséhez futtassa a következő parancsot a Cloud Shell:

az webapp list-runtimes --os linux | grep DOTNET

A .NET Core verziójának beállítása

Állítsa be a célkeretet a ASP.NET Core projekt projektfájljában. További információ: A .NET Core-dokumentációban használni kívánt .NET Core-verzió kiválasztása .

Futtassa a következő parancsot a Cloud Shell a .NET Core 3.1-es verziójának beállításához:

az webapp config set --name <app-name> --resource-group <resource-group-name> --linux-fx-version "DOTNETCORE|3.1"

Buildautomatizálás testreszabása

Ha az alkalmazást Git használatával vagy olyan zip-csomagokkal helyezi üzembe, amelyeken engedélyezve van a buildautomatizálás, a App Service buildautomatizálási lépések az alábbi sorrendben haladnak végig:

  1. Futtassa az egyéni szkriptet, ha azt a adja PRE_BUILD_SCRIPT_PATHmeg.
  2. Futtassa a parancsot dotnet restore a NuGet-függőségek visszaállításához.
  3. Futtassa a parancsot dotnet publish egy bináris éles környezethez való létrehozásához.
  4. Futtassa az egyéni szkriptet, ha azt a adja POST_BUILD_SCRIPT_PATHmeg.

PRE_BUILD_COMMAND és POST_BUILD_COMMAND alapértelmezés szerint üres környezeti változók. A build előtti parancsok futtatásához definiálja a következőt PRE_BUILD_COMMAND: . A build utáni parancsok futtatásához definiálja a következőt POST_BUILD_COMMAND: .

Az alábbi példa a két változót egy parancssorozatra adja meg, vesszővel elválasztva.

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings PRE_BUILD_COMMAND="echo foo, scripts/prebuild.sh"
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings POST_BUILD_COMMAND="echo foo, scripts/postbuild.sh"

A buildautomatizálás testreszabásához további környezeti változókért lásd: Oryx-konfiguráció.

A App Service linuxos ASP.NET Core-alkalmazások futtatásáról és buildeléséről az Oryx dokumentációja: A .NET Core-alkalmazások észlelése és létrehozása című témakörben talál további információt.

Hozzáférés a környezeti változókhoz

Az App Service-szel az alkalmazás kódján kívül is megadhatja az alkalmazások beállításait. Ezután bármely osztályban elérheti őket a standard ASP.NET Core függőséginjektálási mintával:

using Microsoft.Extensions.Configuration;

namespace SomeNamespace 
{
    public class SomeClass
    {
        private IConfiguration _configuration;
    
        public SomeClass(IConfiguration configuration)
        {
            _configuration = configuration;
        }
    
        public SomeMethod()
        {
            // retrieve nested App Service app setting
            var myHierarchicalConfig = _configuration["My:Hierarchical:Config:Data"];
            // retrieve App Service connection string
            var myConnString = _configuration.GetConnectionString("MyDbConnection");
        }
    }
}

Ha például egy azonos nevű alkalmazásbeállítást konfigurál App Service és appsettings.json fájlban, akkor a App Service érték elsőbbséget élvez az appsettings.json értékkel szemben. A helyi appsettings.json érték lehetővé teszi az alkalmazás helyi hibakeresését, de a App Service érték lehetővé teszi, hogy éles környezetben, éles környezetben futtassa az alkalmazást éles környezetben. A kapcsolati sztringek ugyanúgy működnek. Így a kódtáron kívül is megtarthatja az alkalmazás titkos kódját, és a kód módosítása nélkül hozzáférhet a megfelelő értékekhez.

Megjegyzés

Vegye figyelembe, hogy a hierarchikus konfigurációs adatok az appsettings.json fájlban a Linux és a __ .NET Core közötti standard (dupla aláhúzásjel) elválasztóval érhetők el. Ha felül szeretne bírálni egy adott hierarchikus konfigurációs beállítást App Service, állítsa be az alkalmazásbeállítás nevét ugyanazzal a tagolt formátummal a kulcsban. A következő példát futtathatja a Cloud Shell:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings My__Hierarchical__Config__Data="some value"

Megjegyzés

Vegye figyelembe, hogy az appsettings.jsonhierarchikus konfigurációs adatai a : .NET Core-hoz szabványos elválasztóval érhetők el. Ha felül szeretne bírálni egy adott hierarchikus konfigurációs beállítást App Service, állítsa be az alkalmazásbeállítás nevét ugyanazzal a tagolt formátummal a kulcsban. A következő példát futtathatja a Cloud Shell:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings My:Hierarchical:Config:Data="some value"

Többprojektes megoldások üzembe helyezése

Ha egy Visual Studio-megoldás több projektet is tartalmaz, a Visual Studio közzétételi folyamata már magában foglalja az üzembe helyezni kívánt projekt kiválasztását. Ha az üzembe helyezést App Service központi motoron, például a Gittel vagy a ZIP üzembe helyezési funkcióval, amelyen engedélyezve van a buildautomatizálás, a App Service üzembehelyezési motor választja ki a App Service alkalmazásként talált első webhelyet vagy webalkalmazás-projektet. Az alkalmazásbeállítás megadásával PROJECT megadhatja, hogy melyik projektet App Service használni. Futtassa például a következő parancsot a Cloud Shell:

az webapp config appsettings set --resource-group <resource-group-name> --name <app-name> --settings PROJECT="<project-name>/<project-name>.csproj"

Diagnosztikai naplók elérése

ASP.NET Core beépített naplózási szolgáltatót biztosít a App Service számára. A projekt Program.cs fájljában adja hozzá a szolgáltatót az alkalmazáshoz a ConfigureLogging bővítménymetóduson keresztül, az alábbi példában látható módon:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
        {
            logging.AddAzureWebAppDiagnostics();
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

Ezután a standard .NET Core-mintával konfigurálhatja és létrehozhatja a naplókat.

Az alkalmazáskódból létrehozott konzolnaplók App Service-ben történő eléréséhez kapcsolja be a diagnosztikai naplózást a következő parancs a Cloud Shellben történő futtatásával:

az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose

A --level lehetséges értékei: Error, Warning, Info és Verbose. Minden szint tartalmazza az azt megelőző szintet. Például: az Error csak a hibaüzeneteket tartalmazza, a Verbose pedig az összes üzenetet.

Ha a diagnosztikai naplózás be van kapcsolva, futtassa a következő parancsot a naplóstream megtekintéséhez:

az webapp log tail --resource-group <resource-group-name> --name <app-name>

Ha nem jelennek meg azonnal a konzolnaplófájlok, ellenőrizze ismét 30 másodperc múlva.

Megjegyzés

A naplófájlokat a böngészőből is megtekintheti a következő címen: https://<app-name>.scm.azurewebsites.net/api/logs/docker.

A Ctrl+C billentyűparanccsal bármikor leállíthatja a naplóstreamelést.

A ASP.NET Core-alkalmazások App Service-ben történő hibaelhárításával kapcsolatos további információkért lásd: ASP.NET Core hibaelhárítása Azure App Service és IIS esetén

Részletes kivételek lekérése oldal

Amikor a ASP.NET Core-alkalmazás kivételt hoz létre a Visual Studio hibakeresőjében, a böngésző megjelenít egy részletes kivételoldalt, de App Service ezt a lapot általános HTTP 500-hiba vagy Hiba történt a kérés feldolgozása során. Ha meg szeretné jeleníteni a részletes kivételoldalt App Service, adja hozzá az ASPNETCORE_ENVIRONMENT alkalmazásbeállítást az alkalmazáshoz az alábbi parancs futtatásával a Cloud Shell.

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings ASPNETCORE_ENVIRONMENT="Development"

HTTPS-munkamenet észlelése

A App Service A TLS/SSL leállítása a hálózati terheléselosztóknál történik, így minden HTTPS-kérés titkosítatlan HTTP-kérésként éri el az alkalmazást. Ha az alkalmazáslogikának tudnia kell, hogy a felhasználói kérések titkosítva vannak-e, konfigurálja a Továbbított fejlécek köztes szoftvereket a Startup.cs fájlban:

  • Konfigurálja a köztes szoftvert a ForwardedHeadersOptions használatával a és X-Forwarded-Proto fejlécek továbbításához a X-Forwarded-For fájlbanStartup.ConfigureServices.
  • Adjon hozzá magánhálózati IP-címtartományokat az ismert hálózatokhoz, hogy a köztes szoftver megbízzon a App Service terheléselosztóban.
  • Hívja meg a UseForwardedHeaders metódust a fájlban, Startup.Configure mielőtt meghívja a többi köztes szoftvert.

A kód mindhárom elem összehelyezése a következő példához hasonlóan néz ki:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.Configure<ForwardedHeadersOptions>(options =>
    {
        options.ForwardedHeaders =
            ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
        // These three subnets encapsulate the applicable Azure subnets. At the moment, it's not possible to narrow it down further.
        options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("::ffff:10.0.0.0"), 104));
        options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("::ffff:192.168.0.0"), 112));
        options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("::ffff:172.16.0.0"), 108));
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseForwardedHeaders();

    ...

    app.UseMvc();
}

További információ: A ASP.NET Core konfigurálása proxykiszolgálókkal és terheléselosztókkal való együttműködésre.

SSH-munkamenet megnyitása böngészőben

Ahhoz, hogy közvetlen SSH-munkamenetet nyisson meg a tárolóval, az alkalmazásának futnia kell.

Illessze be a következő URL-címet a böngészőbe, és cserélje le az <app-name> kifejezést az alkalmazása nevére:

https://<app-name>.scm.azurewebsites.net/webssh/host

Ha még nem végezte el a hitelesítést, a csatlakozáshoz el kell végeznie a hitelesítést az Azure-előfizetésével. A hitelesítés után egy böngészőn belüli felület jelenik meg, ahol a tárolón belül futtathat parancsokat.

SSH-kapcsolat

Megjegyzés

A rendszer a /home könyvtáron kívül elvégzett módosításokat magában a tárolóban helyezi el, és ezek nem maradnak meg az alkalmazás újraindítása után.

Ha távoli SSH-munkamenetet szeretne megnyitni a helyi gépről, tekintse meg az SSH-munkamenet távoli rendszerhéjból történő megnyitásával foglalkozó témakört.

robots933456 a naplókban

A következő üzenet jelenhet meg a tárolónaplókban:

2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"

Az üzenet biztonságosan figyelmen kívül hagyható. /robots933456.txt egy olyan próba URL-cím, amelyet az App Service annak a vizsgálatára használ, hogy a tároló képes-e a kérések kiszolgálására. A 404-es válasz egyszerűen azt jelenti, hogy a cím nem létezik, azonban jelzi az App Service számára, hogy a tároló kifogástalan állapotú, és készen áll a kérések megválaszolására.

Következő lépések

Vagy tekintse meg a további erőforrásokat:

Környezeti változók és alkalmazásbeállítások referenciája