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


ASP.NET Core alkalmazás konfigurálása az Azure App Service szolgáltatáshoz

Feljegyzés

A .NET-keretrendszer ASP.NET lásd: ASP.NET-alkalmazás konfigurálása Azure-alkalmazás Szolgáltatáshoz. Ha a ASP.NET Core-alkalmazás egyéni Windows- vagy Linux-tárolóban fut, olvassa el az egyéni tároló konfigurálása Azure-alkalmazás szolgáltatáshoz című témakört.

ASP.NET Core-alkalmazásokat lefordított bináris fájlokként kell üzembe helyezni a Azure-alkalmazás Szolgáltatásban. 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 az App Service üzembehelyezési motorja 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 a Azure-alkalmazás Szolgáltatást, először kövesse a ASP.NET Core rövid útmutatóját, és ASP.NET Core-t az SQL Database-lel.

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

Az App Service-ben a Windows-példányokon már telepítve van az összes támogatott .NET Core-verzió. A .NET Core-futtatókörnyezet és az SDK elérhető verzióinak 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 Shellben:

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 Shellben:

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

.NET Core verzió beállítása

Állítsa be a cél keretrendszert a ASP.NET Core-projekt projektfájljában. További információt a .NET Core dokumentációjában használandó .NET Core-verzió kiválasztása című témakörben talál.

Futtassa a következő parancsot a Cloud Shellben a .NET Core-verzió 8.0-ra való beállításához:

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

Testreszabott építési automatizálás

Ha gittel vagy zip-csomagokkal helyezi üzembe az alkalmazást, és engedélyezve van a buildautomatizálás, az App Service buildautomatizálása az alábbi sorrendben halad végig:

  1. Futtassa az egyéni szkriptet, ha a megadott.PRE_BUILD_SCRIPT_PATH
  2. Futtassa dotnet restore a NuGet-függőségek visszaállítását.
  3. Futtassa dotnet publish a bináris buildelést az éles környezethez.
  4. Futtassa az egyéni szkriptet, ha a megadott.POST_BUILD_SCRIPT_PATH

PRE_BUILD_COMMAND és POST_BUILD_COMMAND alapértelmezés szerint üres környezeti változók. Előre összeállított parancsok futtatásához definiálja a következőt PRE_BUILD_COMMAND: . A buildelés utáni parancsok futtatásához definiálja a következőt POST_BUILD_COMMAND:

Az alábbi példa a parancsok sorozatának két változóját 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 az Oryx konfigurációját.

Az App Service linuxos ASP.NET Core-alkalmazások futtatásáról és buildeléséről az Oryx dokumentációjában talál további információt: A .NET Core-alkalmazások észlelése és felépítése.

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 az App Service-ben és appsettings.json azonos nevű alkalmazásbeállítást konfigurál, akkor az 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, az App Service-érték azonban 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 megőrizheti az alkalmazás titkos kulcsait, és a kód módosítása nélkül elérheti a megfelelő értékeket.

Feljegyzés

Vegye figyelembe, hogy a appsettings.json hierarchikus konfigurációs adatai a __ Linuxon megszokott (dupla aláhúzásjel) elválasztójellel érhetők el a .NET Core-ba. Ha felül szeretne bírálni egy adott hierarchikus konfigurációs beállítást az App Service-ben, á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 Shellben:

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

Feljegyzés

Vegye figyelembe, hogy az appsettings.json hierarchikus konfigurációs adatai a : .NET Core-hoz megszokott elválasztóval érhetők el. Ha felül szeretne bírálni egy adott hierarchikus konfigurációs beállítást az App Service-ben, á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 Shellben:

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 helyezendő projekt kiválasztását. Amikor az App Service üzembehelyezési motoron ( például a Gittel vagy a ZIP üzembe helyezéssel engedélyezve van a buildautomatizálás) üzembe helyezésekor az App Service üzembehelyezési motorja kiválasztja az app Service-alkalmazásként talált első webhelyet vagy webalkalmazás-projektet. Az appbeállítás megadásával PROJECT megadhatja, hogy az App Service melyik projektet használja. Futtassa például a következő parancsot a Cloud Shellben:

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 egy beépített naplózási szolgáltatót biztosít az App Service-hez. A projekt Program.cs adja hozzá a szolgáltatót az alkalmazáshoz a ConfigureLogging bővítménymetóduson keresztül, ahogyan az a következő példában látható:

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

Ezután konfigurálhatja és létrehozhat naplókat a szabványos .NET Core-mintával.

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.

Feljegyzé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.

Az App Service-ben ASP.NET Core-alkalmazások hibaelhárításával kapcsolatos további információkért lásd: ASP.NET Core hibaelhárítása Azure-alkalmazás Szolgáltatáson és IIS-en

Részletes kivételek oldal letöltése

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

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

HTTPS munkamenet észlelése

Az App Service-ben a TLS/SSL-leállítás 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 szoftverét a Startup.cs:

A kód mindhárom elem összevonása 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éshez.

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

Feljegyzé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