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 futásidejű 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
Feljegyzés
A .NET 9 -alkalmazások (STS- és Windows App Service-alkalmazások MSBuild vagy SCM_DO_BUILD) használatával történő létrehozása még nem támogatott. Ezeknek a buildelési forgatókönyveknek a támogatása a kezdeti ga dátum után, 2024. december 4-ig fog érkezni. A Visual Studio, a Visual Studio Code, a GitHub Actions és az Azure DevOps használatával az App Service-en kívül építkeznek.
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:
- Futtassa az egyéni szkriptet, ha a megadott.
PRE_BUILD_SCRIPT_PATH
- Futtassa
dotnet restore
a NuGet-függőségek visszaállítását. - Futtassa
dotnet publish
a bináris buildelést az éles környezethez. - 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
Fontolja meg a biztonságosabb csatlakozási lehetőségeket, amelyek egyáltalán nem igényelnek kapcsolati titkos kulcsokat. További információ: Biztonságos kapcsolat az Azure-szolgáltatásokhoz és -adatbázisokhoz Azure-alkalmazás Szolgáltatásból.
Feljegyzés
Vegye figyelembe, hogy a appsettings.json hierarchikus konfigurációs adataia __
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 adataia :
.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öbb projektet érintő megoldások telepíté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:
- Konfigurálja a köztes szoftvert a ForwardedHeadersOptions használatával a fejlécek és
X-Forwarded-Proto
a fejlécek továbbításához aX-Forwarded-For
következőbenStartup.ConfigureServices
: . - Adjon hozzá privát IP-címtartományokat az ismert hálózatokhoz, hogy a köztes szoftver megbízható legyen az App Service terheléselosztóban.
- Meghívja a UseForwardedHeaders metódust,
Startup.Configure
mielőtt meghívna más köztes szoftvereket.
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.
URL-cím átírása vagy átirányítása
Az URL-cím átírásához vagy átirányításához használja a köztes szoftver újraírását a ASP.NET Core-ban.
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.
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: