konfigurace aplikace ASP.NET Core pro Azure App Service

Poznámka

informace o ASP.NET v .NET Framework najdete v tématu konfigurace ASP.NET aplikace pro Azure App Service

ASP.NET Core aplikace musí být nasazené, aby se Azure App Service jako zkompilované binární soubory. nástroj pro publikování Visual Studio sestaví řešení a poté nasadí zkompilované binární soubory přímo, zatímco modul nasazení App Service nasadí úložiště kódu jako první a potom zkompiluje binární soubory.

tato příručka poskytuje klíčové koncepty a pokyny pro ASP.NET Core vývojářům. pokud jste Azure App Service nikdy nepoužili, postupujte jako první v kurzu ASP.NET Core rychlý start a ASP.NET Core SQL Database .

Zobrazit podporované verze modulu runtime .NET Core

v App Service již mají Windows instance nainstalovány všechny podporované verze rozhraní .net Core. Pokud chcete zobrazit dostupné verze rozhraní .NET Core Runtime a sady SDK, přejděte na adresu https://<app-name>.scm.azurewebsites.net/DebugConsole a spusťte následující příkaz v konzole založené na prohlížeči:

dotnet --info

Zobrazit verzi .NET Core

Chcete-li zobrazit aktuální verzi rozhraní .NET Core, spusťte následující příkaz v Cloud Shell:

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

Pokud chcete zobrazit všechny podporované verze .NET Core, spusťte v Cloud Shellnásledující příkaz:

az webapp list-runtimes --linux | grep DOTNET

Nastavit verzi .NET Core

nastavte cílovou architekturu v souboru projektu pro váš ASP.NET Core projekt. Další informace najdete v tématu Výběr verze .NET Core pro použití v dokumentaci k .NET Core.

Spuštěním následujícího příkazu v Cloud Shell nastavte verzi .NET Core na 3,1:

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

Přizpůsobení automatizace sestavení

Pokud nasadíte aplikaci pomocí Gitu nebo balíčků zip s povolenou možností automatizace sestavení, App Service sestavování kroků automatizace pomocí následujícího postupu:

  1. Spusťte vlastní skript, pokud je určen PRE_BUILD_SCRIPT_PATH .
  2. spusťte dotnet restore pro obnovení závislostí NuGet.
  3. Spusťte příkaz dotnet publish pro sestavení binárního souboru pro produkční prostředí.
  4. Spusťte vlastní skript, pokud je určen POST_BUILD_SCRIPT_PATH .

PRE_BUILD_COMMAND a POST_BUILD_COMMAND jsou proměnné prostředí, které jsou ve výchozím nastavení prázdné. Chcete-li spustit příkazy před sestavením, definujte PRE_BUILD_COMMAND . Chcete-li spustit příkazy po sestavení, definujte POST_BUILD_COMMAND .

Následující příklad určuje dvě proměnné pro řadu příkazů, které jsou odděleny čárkami.

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"

Další proměnné prostředí pro přizpůsobení automatizace sestavení naleznete v tématu Oryx Configuration.

další informace o tom, jak App Service spouštět a sestavují ASP.NET Core aplikace v systému Linux, najdete v dokumentaci k Oryx: jak se zjišťují a vytváří aplikace .net Core.

Přístup k proměnným prostředí

V App Service můžete nastavit nastavení aplikace mimo kód vaší aplikace. pak k nim můžete přistupovat v libovolné třídě pomocí vzoru pro vkládání závislostí standard ASP.NET Core:

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");
        }
    }
}

Pokud nakonfigurujete nastavení aplikace se stejným názvem v App Service a v souboru appSettings. JSON, má například hodnota App Service přednost před hodnotou appSettings. JSON . Lokální hodnota appSettings. JSON vám umožní místní ladění aplikace, ale hodnota App Service umožňuje vaší aplikaci spouštět v produkčním prostředí s nastavením produkčního prostředí. Připojovací řetězce fungují stejným způsobem. Tímto způsobem můžete zachovat tajné klíče aplikace mimo vaše úložiště kódu a přistupovat k odpovídajícím hodnotám beze změny kódu.

Poznámka

Všimněte si, že Hierarchická konfigurační data v souboru appSettings. JSON jsou k dispozici pomocí : oddělovače standard pro .NET Core. Pokud chcete v App Service přepsat konkrétní hierarchické nastavení konfigurace, v klíči nastavte název nastavení aplikace na stejný formát s oddělovači. v Cloud Shellmůžete spustit následující příklad:

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

Nasazení řešení s více projekty

pokud Visual Studio řešení obsahuje více projektů, proces publikování Visual Studio již zahrnuje výběr projektu k nasazení. Při nasazení do modulu nasazení App Service, jako je například s Gitm nebo pomocí nasazení ZIP s povolenou automatizací sestavení, modul nasazení App Service vybere první web nebo webovou aplikaci, Project kterou najde jako aplikaci App Service. Můžete určit, který projekt App Service má použít, zadáním PROJECT nastavení aplikace. Například spusťte následující příkaz v Cloud Shell:

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

Přístup k diagnostickým protokolům

ASP.NET Core poskytuje integrovaného zprostředkovatele protokolování pro App Service. V programu program. cs vašeho projektu přidejte poskytovatele do aplikace prostřednictvím ConfigureLogging metody rozšíření, jak je znázorněno v následujícím příkladu:

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

Pak můžete nakonfigurovat a vygenerovat protokoly se standardním vzorem .NET Core.

Pokud chcete získat přístup k protokolům konzoly vygenerovaným v rámci kódu aplikace ve službě App Service, zapněte protokolování diagnostiky spuštěním následujícího příkazu v Cloud Shellu:

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

Možné hodnoty pro --level jsou: Error, Warning, Info a Verbose. Každá další úroveň zahrnuje předchozí úroveň. Například Error zahrnuje jenom chybové zprávy a Verbose zahrnuje všechny zprávy.

Jakmile je aktivované protokolování diagnostiky, spusťte následující příkaz pro zobrazení streamu protokolů:

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

Pokud nevidíte protokoly konzoly okamžitě, podívejte se znovu za 30 sekund.

Poznámka

Soubory protokolu můžete také zkontrolovat v prohlížeči na https://<app-name>.scm.azurewebsites.net/api/logs/docker.

Streamování protokolů můžete kdykoli zastavit zadáním Ctrl+C.

další informace o řešení potíží s ASP.NET Core aplikacemi v App Service najdete v tématu věnovaném řešení potíží ASP.NET Core na Azure App Service a IIS .

Získat podrobné stránky výjimek

když vaše aplikace ASP.NET Core v ladicím programu Visual Studio vygeneruje výjimku, prohlížeč zobrazí stránku podrobností o výjimce, ale v App Service tuto stránku nahradí obecná chyba protokolu HTTP 500 nebo při zpracování vaší žádosti došlo k chybě. . Pokud chcete zobrazit stránku podrobností o výjimce v App Service, přidejte do ASPNETCORE_ENVIRONMENT aplikace nastavení aplikace spuštěním následujícího příkazu v Cloud Shell.

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

Zjistit relaci HTTPS

V App Service v nástroji pro vyrovnávání zatížení sítě dochází k ukončení protokolu TLS/SSL , takže všechny požadavky HTTPS dosáhnou vaší aplikace jako nešifrované požadavky HTTP. Pokud vaše logika aplikace potřebuje zjistit, jestli se požadavky uživatelů šifrují, nebo ne, nakonfigurujte Middlewari předávaných hlaviček při spuštění. cs:

  • Nakonfigurujte middleware pomocí ForwardedHeadersOptions k přeposílání X-Forwarded-For X-Forwarded-Proto hlaviček a v Startup.ConfigureServices .
  • Přidejte do známých sítí rozsahy privátních IP adres, aby middleware mohl důvěřovat nástroji pro vyrovnávání zatížení App Service.
  • Volejte metodu UseForwardedHeaders v v Startup.Configure před voláním jiného middleware.

Vložení všech tří prvků dohromady, váš kód vypadá jako v následujícím příkladu:

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

další informace najdete v tématu konfigurace ASP.NET Core pro práci se servery proxy a nástroji pro vyrovnávání zatížení.

Otevření relace SSH v prohlížeči

Pokud chcete otevřít přímou relaci SSH s kontejnerem, vaše aplikace by měla být spuštěná.

Vložte následující adresu URL do vašeho prohlížeče a <app-name> nahraďte názvem vaší aplikace:

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

Pokud ještě nejste ověření, budete se muset ověřit s vaším předplatným Azure, abyste se mohli připojit. Po ověření se vám zobrazí prostředí prohlížeče, ve kterém můžete spouště příkazy uvnitř vašeho kontejneru.

Připojení SSH

Poznámka

Všechny změny provedené mimo adresář /home se uloží ve vlastním kontejneru a po restartování aplikace se neuchovají.

Pokud chcete otevřít vzdálenou relaci SSH z místního počítače, projděte si téma věnované otevření relace SSH ze vzdáleného prostředí.

robots933456 v protokolech

V protokolech kontejneru se může zobrazit následující zpráva:

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

Tuto zprávu klidně ignorujte. /robots933456.txt je fiktivní cesta URL, kterou App Service používá ke kontrole, jestli kontejner dokáže obsloužit požadavky. Odpověď 404 jednoduše indikuje, že příslušná cesta neexistuje, ale dá službě App Service vědět, že kontejner je v pořádku a je připravený reagovat na požadavky.

Další kroky

Nebo si přečtěte další zdroje informací:

Reference k proměnným prostředí a nastavení aplikace