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


ASP.NET Core Module (ANCM) for IIS

Megjegyzés:

Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.

Figyelmeztetés

A ASP.NET Core ezen verziója már nem támogatott. További információt a .NET és a .NET Core támogatási szabályzatában talál. A jelen cikk .NET 9-es verzióját lásd az aktuális kiadásért .

A ASP.NET core modul (ANCM) egy natív IIS-modul, amely az IIS-folyamathoz csatlakozik, lehetővé téve ASP.NET Core-alkalmazások számára az IIS használatát. Futtassa ASP.NET Core-alkalmazásokat az IIS-vel az alábbiak szerint:

Az egyes üzemeltetési modellek között kompromisszumok vannak. Alapértelmezés szerint a folyamaton belüli üzemeltetési modell a jobb teljesítmény és a diagnosztika miatt van használatban.

További információkért és konfigurációs útmutatásért tekintse meg az alábbi témaköröket:

ASP.NET Core Modul (ANCM) telepítése

A ASP.NET Core Modul (ANCM) a .NET Core-futtatókörnyezettel van telepítve a .NET Core-csomagból. A ASP.NET core modul előre és hátra kompatibilis a .NET támogatott kiadásaival.

A jelentős változásokat és biztonsági figyelmeztetéseket a közlemények adattárában jelentjük. A hirdetmények egy címkeszűrő kiválasztásával egy adott verzióra korlátozhatók.

Töltse le a telepítőt az alábbi hivatkozással:

A .NET Core hosting csomag jelenlegi telepítője (közvetlen letöltés)

További információ, beleértve a modul egy korábbi verziójának telepítését, lásd: Hosting Bundle.

Az ASP.NET Core-alkalmazások IIS-kiszolgálón való közzétételéről szóló oktatóanyagért lásd: ASP.NET Core-alkalmazás közzététele az IIS-ben.

Az ASP.NET Core modul (ANCM) egy natív IIS-modul, amely az IIS csővezetékhez a következőhöz csatlakozik:

Támogatott Windows-verziók:

  • Windows 7 vagy újabb
  • Windows Server 2012 R2 vagy újabb

A folyamaton belüli üzemeltetés során a modul egy folyamaton belüli kiszolgáló-implementációt használ az IIS-hez, az úgynevezett IIS HTTP Servert (IISHttpServer).

A folyamaton kívüli üzemeltetés esetén a modul csak a következővel Kestrelműködik: . A modul nem működik HTTP.sys.

Üzemeltetési modellek

Folyamaton belüli üzemeltetési modell

Az ASP.NET Core-alkalmazások alapértelmezés szerint a folyamaton belüli üzemeltetési modellt használják.

A folyamaton belüli üzemeltetésre a következő jellemzők vonatkoznak:

  • Az IIS HTTP-kiszolgáló (IISHttpServer) használatos Kestrel helyett. A folyamatban lévő CreateDefaultBuilder a következő műveletet hívja meg: UseIIS

    • Regisztrálja a IISHttpServer.
    • Konfigurálja azt a port- és alapelérési utat, amelyen a kiszolgálónak figyelnie kell, amikor a ASP.NET Core-modul mögött fut.
    • Konfigurálja a hostot az indítási hibák rögzítésére.
  • A requestTimeout attribútum nem vonatkozik a folyamatban lévő üzemeltetésre.

  • Az alkalmazáskészletek alkalmazások közötti megosztása nem támogatott. Alkalmazásonként egy alkalmazáskészletet használhat.

  • Ha webtelepítést használ, vagy manuálisan helyez el egy app_offline.htm fájlt az üzembe helyezésben, előfordulhat, hogy az alkalmazás nem áll le azonnal, ha van nyitott kapcsolat. Egy WebSocket-kapcsolat például késleltetheti az alkalmazás leállítását.

  • Az alkalmazás architektúrájának (bititásának) és a telepített futtatókörnyezetnek (x64 vagy x86) meg kell egyeznie az alkalmazáskészlet architektúrájának.

  • A rendszer észleli az ügyfél kapcsolatának megszakadását. A HttpContext.RequestAborted lemondási token az ügyfél leválasztásakor törlődik.

  • Az ASP.NET Core 2.2.1 vagy korábbi verzióiban a GetCurrentDirectory helyett az IIS által indított folyamat kezelő könyvtárát adja vissza, nem pedig az alkalmazás könyvtárát (például C:\Windows\System32\inetsrv a w3wp.exe esetén).

    Az alkalmazás aktuális könyvtárát beállító mintakódért tekintse meg az osztálytCurrentDirectoryHelpers. Hívja meg a SetCurrentDirectory metódust. További hívások az alkalmazás címtárának megadásához GetCurrentDirectory .

  • Folyamatba beágyazott üzemeltetés esetén a rendszer nem hívja meg AuthenticateAsync belsőleg a felhasználó inicializálásához. Ezért egy IClaimsTransformation implementáció, amelyet a jogcímek minden hitelesítés utáni átalakítására használnak, alapértelmezés szerint nincs aktiválva. A követeléseket implementációval történő IClaimsTransformation átalakításakor hívja meg AddAuthentication a hitelesítési szolgáltatások hozzáadásához.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddTransient<IClaimsTransformation, ClaimsTransformer>();
        services.AddAuthentication(IISServerDefaults.AuthenticationScheme);
    }
    
    public void Configure(IApplicationBuilder app)
    {
        app.UseAuthentication();
    }
    

Folyamaton kívüli üzemeltetési modell

Ha egy alkalmazást folyamaton kívüli üzemeltetésre szeretne konfigurálni, állítsa be a <AspNetCoreHostingModel> tulajdonság OutOfProcess értékét a projektfájlban (.csproj):

<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

A folyamaton belüli üzemeltetés az alapértelmezett értékkel van beállítva InProcess.

<AspNetCoreHostingModel> értéke nem érzékeny a kis- és nagybetűkre, így a inprocess és outofprocess érvényes értékek.

Kestrel kiszolgálót használ az IIS HTTP-kiszolgáló (IISHttpServer) helyett.

A folyamaton kívüli CreateDefaultBuilder hívások UseIISIntegration-t hívják meg a következő cél érdekében:

  • Konfigurálja azt a port- és alapelérési utat, amelyen a kiszolgálónak figyelnie kell, amikor a ASP.NET Core-modul mögött fut.
  • Konfigurálja a hostot az indítási hibák rögzítésére.

Üzemeltetési modell változásai

Ha a hostingModel beállítás módosul a web.config fájlban (ezt a Konfiguráció című web.config szakaszban ismertetjük), a modul újrahasznosítja az IIS feldolgozói folyamatát.

Az IIS Express esetében a modul nem hasznosítja újra a feldolgozói folyamatot, hanem az aktuális IIS Express-folyamat kecses leállítását indítja el. Az alkalmazás következő kérése egy új IIS Express-folyamatot hoz létre.

Folyamat neve

Process.GetCurrentProcess().ProcessName jelentések w3wp (folyamatban lévő) vagy / (folyamaton kívüli).iisexpressdotnet

Számos natív modul, például a Windows-hitelesítés, aktív marad. A ASP.NET Core modullal aktív IIS-modulokkal kapcsolatos további információkért tekintse meg a ASP.NET Core-val rendelkező IIS-modulokat.

A ASP.NET core modul a következőket is lehetővé teszi:

  • Munkafolyamat környezeti változóinak beállítása.
  • Az indítási problémák elhárítása érdekében naplózza a fájltárolóba irányuló stdout kimenetet.
  • Windows-hitelesítési jogkivonatok továbbítása.

A ASP.NET Core Modul (ANCM) telepítése és használata

A ASP.NET Core modul telepítésével kapcsolatos utasításokért lásd : .NET Core Hosting Bundle telepítése. A ASP.NET core modul előre és hátra kompatibilis a .NET támogatott kiadásaival.

A jelentős változásokat és biztonsági figyelmeztetéseket a közlemények adattárában jelentjük. A hirdetmények egy címkeszűrő kiválasztásával egy adott verzióra korlátozhatók.

A web.config fájl konfigurálása

Az ASP.NET Core modul a web.config fájl aspNetCore csomópontjának system.webServer szakaszával van konfigurálva.

A rendszer a következő web.config fájlt teszi közzé egy keretrendszerfüggő üzembe helyezéshez , és konfigurálja a ASP.NET core modult a helykérések kezeléséhez:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet"
                  arguments=".\MyApp.dll"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

A következő web.config egy önálló üzembe helyezéshez van közzétéve.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\MyApp.exe"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

A InheritInChildApplications tulajdonság úgy van beállítva false , hogy jelezze, hogy az <location> elemben megadott beállításokat nem öröklik az alkalmazás alkönyvtárában található alkalmazások.

Amikor egy alkalmazást üzembe helyez az Azure App Service-ben, az stdoutLogFile elérési út a következőre \\?\%home%\LogFiles\stdoutvan állítva: . Az elérési út menti az stdout-naplókat a LogFiles mappába, amely a szolgáltatás által automatikusan létrehozott hely.

Az IIS-alalkalmazás konfigurálással kapcsolatos információkért lásd: Gazdagép ASP.NET Core Windows rendszeren IIS-vel.

Az aspNetCore elem attribútumai

Attribute Description Alapértelmezett
arguments

Nem kötelező karakterlánc attribútum.

A processPathban megadott végrehajtható argumentumok.

disableStartUpErrorPage

Nem kötelező logikai attribútum.

Ha igaz, a rendszer letiltja az 502.5 – Folyamathiba lapot, és a web.config konfigurált 502-s állapotkódlap elsőbbséget élvez.

false
forwardWindowsAuthToken

Nem kötelező logikai attribútum.

Ha igaz, a jogkivonatot továbbítják a %ASPNETCORE_PORT% figyelő gyermek processz számára fejlécként 'MS-ASPNETCORE-WINAUTHTOKEN' kérésenként. A feladata ennek a folyamatnak, hogy kérésenként meghívja a CloseHandle-t ezen a tokenen.

true
hostingModel

Nem kötelező karakterlánc attribútum.

Az üzemeltetési modellt folyamaton belüliként (InProcess/inprocess) vagy folyamaton kívüliként (OutOfProcess/outofprocess) adja meg.

InProcess
inprocess
processesPerApplication

Nem kötelező egész szám attribútum.

Az alkalmazásonként felpöröghető folyamatpéldányok számát adja meg a processPath beállításban.

†Folyamatközi üzemeltetés esetén az érték korlátozott 1.

A beállítás processesPerApplication nem ajánlott. Ez az attribútum egy későbbi kiadásban lesz eltávolítva.

Alapértelmezett: 1
Min: 1
Max: 100
processPath

Kötelező karakterlánc attribútum.

A HTTP-kéréseket figyelő folyamatot megnyitó végrehajtható fájl elérési útja. A relatív elérési utak támogatottak. Ha az elérési út a kezdőbetűvel .kezdődik, az elérési út a hely gyökeréhez viszonyítottnak minősül.

rapidFailsPerMinute

Nem kötelező egész szám attribútum.

Megadja, hogy a processPathban megadott folyamat hányszor omlhat össze percenként. Ha túllépi ezt a korlátot, a modul a perc hátralévő részében leállítja a folyamatot.

A folyamaton belüli üzemeltetés nem támogatott.

Alapértelmezett: 10
Min: 0
Max: 100
requestTimeout

Nem kötelező időbélyeg attribútum.

Azt az időtartamot adja meg, amíg a ASP.NET core modul a %ASPNETCORE_PORT%figyelési folyamat válaszára vár.

Az ASP.NET Core modulnak az ASP.NET Core 2.1-es vagy újabb verzióival szállított változataiban a requestTimeout értékét órákban, percekben és másodpercekben határozzák meg.

A folyamaton belüli üzemeltetésre nem vonatkozik. A folyamatban lévő üzemeltetés esetén a modul megvárja, amíg az alkalmazás feldolgozni fogja a kérést.

A karakterlánc percek és másodpercek érvényes értékei a 0–59 tartományba tartoznak. A 60 perc vagy másodperc értékének használata 500 belső kiszolgálóhibát eredményez.

Alapértelmezett: 00:02:00
Min: 00:00:00
Max: 360:00:00
shutdownTimeLimit

Nem kötelező egész szám attribútum.

Az időtartam másodpercben, ameddig a modul várja a végrehajtható fájl rendben való leállítását a app_offline.htm fájl észleléséig.

Alapértelmezett: 10
Min: 0
Max: 600
startupTimeLimit

Nem kötelező egész szám attribútum.

A modul az időtartamot másodpercben méri, amely alatt megvárja, hogy a végrehajtható fájl egy, a porton hallgató folyamatot indítson. Ha túllépi ezt az időkorlátot, a modul leáll a folyamaton.

A folyamat belüli üzemeltetés esetén: A folyamat nem indul újra, és nem használja a rapidFailsPerMinute beállítást.

Folyamaton kívüli üzemeltetés esetén: A modul megkísérli újraindítani a folyamatot, amikor új kérést kap, és továbbra is megpróbálja újraindítani a folyamatot a következő bejövő kérelmeken, kivéve, ha az alkalmazás nem indítja el a gyorsFailsPerMinute hányszor az utolsó gördülő percben.

A 0 (nulla) érték nem számít végtelen időtúllépésnek.

Alapértelmezett: 120
Min: 0
Max: 3600
stdoutLogEnabled

Nem kötelező logikai attribútum.

Ha igaz, a processPath-ban megadott folyamat stdout és stderr kimenete az stdoutLogFile fájlra lesz átirányítva.

false
stdoutLogFile

Nem kötelező karakterlánc attribútum.

Megadja azt a relatív vagy abszolút fájl elérési útját, amelyhez a folyamatPathban megadott folyamatból származó stdout és stderr naplózva van. A relatív elérési utak a webhely gyökeréhez vannak viszonyítva. Olyan elérési utak, amelyek .-tel kezdődnek, a hely gyökéréhez viszonyítottnak számítanak, és minden más elérési út abszolút elérési útként van kezelve. Az elérési úton megadott mappákat a modul hozza létre a naplófájl létrehozásakor. Aláhúzásjel-elválasztók használatával időbélyeget, folyamatazonosítót és fájlkiterjesztést (.log) adunk hozzá az stdoutLogFile elérési út utolsó szegmenséhez. Ha a .\logs\stdout értékként van megadva, egy példa stdout napló stdout_20180205194132_1934.log néven kerül mentésre a logs mappába, amikor 2018.02.05-én 19:41:32-kor mentik, a folyamatazonosító 1934 értékével.

aspnetcore-stdout

Környezeti változók beállítása

Az attribútumban processPath lévő folyamathoz környezeti változók adhatók meg. Adjon meg egy környezeti változót egy <environmentVariable><environmentVariables> gyűjteményelem gyermekelemével. Az ebben a szakaszban beállított környezeti változók elsőbbséget élveznek a rendszer környezeti változóival szemben.

Az alábbi példa két környezeti változót állít be a következőben web.config: . ASPNETCORE_ENVIRONMENT konfigurálja az alkalmazás környezetét a következőre Development: . A fejlesztő ideiglenesen beállíthatja ezt az értéket a web.config fájlban, hogy a fejlesztői kivételoldal betöltődjön egy alkalmazáskivétel hibakeresésekor. CONFIG_DIR Egy példa egy felhasználó által definiált környezeti változóra, ahol a fejlesztő olyan kódot írt, amely beolvassa az értéket az indításkor, hogy létrehozhassa az alkalmazás konfigurációs fájljának betöltésének útvonalát.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="inprocess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>

Megjegyzés:

A környezet web.config közvetlen beállításának másik lehetősége, ha a <EnvironmentName> tulajdonságot a közzétételi profilba (.pubxml) vagy a projektfájlba foglalja bele. Ez a megközelítés a környezetet web.config állítja be a projekt közzétételekor:

<PropertyGroup>
  <EnvironmentName>Development</EnvironmentName>
</PropertyGroup>

Figyelmeztetés

Csak olyan átmeneti és tesztelési kiszolgálókon állítsa be a ASPNETCORE_ENVIRONMENT környezeti változót Development , amelyek nem érhetők el a nem megbízható hálózatokhoz, például az internethez.

app_offline.htm

Ha egy alkalmazás gyökérkönyvtárában egy névvel app_offline.htm rendelkező fájl található, a ASP.NET core modul megpróbálja elegánsan leállítani az alkalmazást, és leállítani a bejövő kérések feldolgozását. Ha az alkalmazás a megadott shutdownTimeLimitmásodpercek száma után is fut, a ASP.NET core modul leáll a futó folyamaton.

Amíg a app_offline.htm fájl jelen van, a ASP.NET core modul a fájl tartalmának visszaküldésével válaszol a app_offline.htm kérelmekre. app_offline.htm A fájl eltávolítása után a következő kérés elindítja az alkalmazást.

A folyamaton kívüli üzemeltetési modell használatakor előfordulhat, hogy az alkalmazás nem áll le azonnal, ha van nyitott kapcsolat. Egy WebSocket-kapcsolat például késleltetheti az alkalmazás leállítását.

Indítási hibalap

Mind a folyamatban lévő, mind a folyamaton kívüli üzemeltetés egyéni hibaoldalakat készít, amikor nem sikerül elindítani az alkalmazást.

Ha az ASP.NET Core modul nem találja a folyamaton belüli vagy a folyamaton kívüli kéréskezelőt, megjelenik egy 500.0 - Folyamaton belüli/Folyamaton kívüli Kezelő betöltési hiba állapotkódlap.

Folyamatban lévő üzemeltetés esetén, ha a ASP.NET core modul nem tudja elindítani az alkalmazást, megjelenik egy 500.30 – Indítási hiba állapotkódlap.

Folyamaton kívüli üzemeltetés esetén, ha a ASP.NET core modul nem indítja el a háttérfolyamatot, vagy a háttérfolyamat elindul, de nem figyeli a konfigurált portot, megjelenik egy 502.5 – Folyamathiba állapotkódlapja.

A lap letiltásához és az alapértelmezett IIS 5xx állapotkódlapra való visszatéréshez használja az disableStartUpErrorPage attribútumot. Az egyéni hibaüzenetek konfigurálásáról további információt a HTTP-hibák <httpErrors>című témakörben talál.

Napló létrehozása és átirányítása

Az ASP.NET Core modul átirányítja az stdout és stderr konzol kimenetét a lemezre, ha a stdoutLogEnabled elem stdoutLogFile és aspNetCore attribútumai be vannak állítva. Az elérési úton lévő stdoutLogFile mappákat a modul hozza létre a naplófájl létrehozásakor. Az alkalmazáskészletnek írási hozzáféréssel kell rendelkeznie a naplók írási helyéhez ( IIS AppPool\<app_pool_name> írási engedély megadásához).

A naplók nem lesznek elforgatva, kivéve, ha a folyamat újrahasznosítása/újraindítása történik. A hoszt felelőssége, hogy korlátozza a naplók által használt lemezterületet.

A stdout-napló használata csak az alkalmazások indítási problémáinak elhárításához ajánlott az IIS-en való üzemeltetéskor vagy az IIS-hez a Visual Studióval való fejlesztési idő támogatásához, nem pedig a helyi hibakereséshez és az alkalmazás IIS Expresszel való futtatásához.

Ne használja az stdout naplót általános alkalmazásnaplózási célokra. Az ASP.NET Core-alkalmazások rutinnaplózásához használjon egy naplózási kódtárat, amely korlátozza a naplófájlok méretét, és elforgatja a naplókat. További információ: külső naplózási szolgáltatók.

A naplófájl létrehozásakor a rendszer automatikusan hozzáad egy időbélyeget és egy fájlkiterjesztést. A naplófájl neve úgy áll össze, hogy hozzáfűzi az időbélyeget, a folyamatazonosítót és a fájlkiterjesztést (.log) az stdoutLogFile elérési út utolsó szegmenséhez (általában stdout) aláhúzásjelekkel elválasztva. Ha az stdoutLogFile elérési út stdout-re végződik, egy 1934 PID-vel rendelkező alkalmazás naplója, amely 2018. 02. 05-én 19:42:32-kor lett létrehozva, az stdout_20180205194132_1934.log fájlnevet viseli.

Ha stdoutLogEnabled hamis, az alkalmazás indításakor előforduló hibákat a rendszer rögzíti, és legfeljebb 30 KB-ig bocsátja ki az eseménynaplóba. Az indítás után a rendszer minden további naplót elvet.

Az alábbi mintaelem aspNetCore konfigurálja az stdout-naplózást a relatív útvonalon .\log\. Győződjön meg arról, hogy az AppPool felhasználói identitása rendelkezik engedéllyel a megadott elérési útra való íráshoz.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout"
    hostingModel="inprocess">
</aspNetCore>

Amikor közzétesz egy alkalmazást az Azure App Service üzembe helyezéséhez, a Web SDK az stdoutLogFile értéket \\?\%home%\LogFiles\stdout értékre állítja. A %home környezeti változó előre definiálva van az Azure App Service által üzemeltetett alkalmazásokhoz.

Naplózási szűrőszabályok létrehozásához tekintse meg a naplószűrő szabályok alkalmazása a ASP.NET Core naplózási dokumentációjának kódszakaszában.

Az elérési utak formátumáról további információt a Windows-rendszerek fájlútvonal-formátumai című témakörben talál.

Továbbfejlesztett diagnosztikai naplók

A ASP.NET core modul konfigurálható továbbfejlesztett diagnosztikai naplók biztosításához. Adja hozzá az <handlerSettings> elemet a <aspNetCore> elemhez web.config. A debugLevelTRACE beállítása magasabb szintű diagnosztikai információs hűséget tár fel.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

Az elérési út minden mappáját (logs az előző példában) a modul hozza létre a naplófájl létrehozásakor. Az alkalmazáskészletnek írási hozzáféréssel kell rendelkeznie ahhoz a helyhez, ahol a naplók meg vannak írva (írási engedély megadásához használja IIS AppPool\{APP POOL NAME}a helyőrzőt, ahol a helyőrző {APP POOL NAME} az alkalmazáskészlet neve).

A hibakeresési szint (debugLevel) értékei közé tartozhat a szint és a hely is.

Szintek (a legkevésbé bőbeszédűtől a legbővebbig):

  • ERROR
  • FIGYELMEZTETÉS
  • INFORMÁCIÓ
  • NYOM

Helyek (több hely is engedélyezett):

  • KONZOL
  • EVENTLOG
  • FILE

A kezelő beállításai környezeti változókon keresztül is megadhatóak:

  • ASPNETCORE_MODULE_DEBUG_FILE: A hibakeresési naplófájl elérési útja. (Alapértelmezett: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: Hibakeresési szint beállítása.

Figyelmeztetés

Ne hagyja, hogy a hibakeresési naplózás engedélyezve legyen az üzemelő példányban a probléma elhárításához szükségesnél tovább. A napló mérete nem korlátozott. A hibakeresési napló engedélyezésének elhagyásával kimerítheti a rendelkezésre álló lemezterületet, és összeomlhat a kiszolgáló vagy az appszolgáltatás.

Tekintse meg a web.config konfiguráció használatának példáját a aspNetCore elemre a web.config fájlban.

A verem méretének módosítása

Csak a folyamaton belüli üzemeltetési modell használata esetén érvényes.

Konfigurálja a felügyelt verem méretét a bájtokban megadott stackSize beállítással a következőképpen web.config. Az alapértelmezett méret 1 048 576 bájt (1 MB).

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="stackSize" value="2097152" />
  </handlerSettings>
</aspNetCore>

A proxykonfiguráció HTTP protokollt és párosítási jogkivonatot használ

Csak a folyamaton kívüli üzemeltetésre vonatkozik.

A ASP.NET core modul Kestrel között létrehozott proxy a HTTP protokollt használja. Nem áll fenn a modul és Kestrel a kiszolgálótól távol lévő hely közötti forgalom lehallgatásának kockázata.

A párosítási token garantálja, hogy a fogadott Kestrel kéréseket az IIS proxizta, és nem más forrásból származtak. A párosítási jogkivonatot a modul egy környezeti változóba (ASPNETCORE_TOKEN) állítja be. A párosítási token minden proxizált kérés fejlécében (MS-ASPNETCORE-TOKEN) is elhelyezve van. Az IIS Middleware minden kapott kérést ellenőriz annak ellenőrzéséhez, hogy a párosítási jogkivonat fejlécének értéke megegyezik-e a környezeti változó értékével. Ha a token értékei nem egyeznek meg, a rendszer naplózza és elutasítja a kérést. A párosítási token környezeti változó, valamint a modul és Kestrel közötti forgalom nem érhetők el szerveren kívüli helyről. A párosítási jogkivonat értékének ismerete nélkül a kiberbűnözők nem küldhetnek be olyan kéréseket, amelyek megkerülik az IIS Middleware-ben való ellenőrzést.

ASP.NET core modul megosztott IIS-konfigurációval

A ASP.NET core modul telepítője a TrustedInstaller-fiók jogosultságaival fut. Mivel a helyi rendszerfiók nem rendelkezik módosítási engedéllyel az IIS megosztott konfigurációja által használt megosztási útvonalhoz, a telepítő megtagadta a hozzáférést a megosztás fájljában található applicationHost.config modulbeállítások konfigurálásakor.

Ha megosztott IIS-konfigurációt használ ugyanazon a gépen, mint az IIS-telepítés, futtassa a ASP.NET Core Hosting Bundle telepítőt a OPT_NO_SHARED_CONFIG_CHECK következő paraméterrel 1:

dotnet-hosting-{VERSION}.exe OPT_NO_SHARED_CONFIG_CHECK=1

Ha a megosztott konfiguráció elérési útja nem ugyanazon a gépen található, mint az IIS-telepítés, kövesse az alábbi lépéseket:

  1. Tiltsa le az IIS megosztott konfigurációját.
  2. Indítsa el a telepítőt.
  3. Exportálja a frissített applicationHost.config fájlt a megosztásba.
  4. Engedélyezze újra az IIS megosztott konfigurációját.

Modulverzió és üzemeltetési csomag telepítőnaplói

A telepített ASP.NET core modul verziójának meghatározása:

  1. A tárhelyrendszeren navigáljon ide %windir%\System32\inetsrv.
  2. Keresse meg a aspnetcore.dll fájlt.
  3. Kattintson a jobb gombbal a fájlra, és válassza a Helyi menü Tulajdonságok parancsát .
  4. Válassza a Részletek lapot. A Fájl és a Termék verzió a modul telepített verzióját jelöli.

A modul üzemeltetési csomag telepítőnaplói a következő helyen C:\Users\%UserName%\AppData\Local\Temptalálhatók: . A fájl neve dd_DotNetCoreWinSvrHosting__{TIMESTAMP}_000_AspNetCoreModule_x64.log.

Modul-, séma- és konfigurációs fájlhelyek

Modul

IIS (x86/amd64):

  • %windir%\System32\inetsrv\aspnetcore.dll

  • %windir%\SysWOW64\inetsrv\aspnetcore.dll

  • %ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

IIS Express (x86/amd64):

  • %ProgramFiles%\IIS Express\aspnetcore.dll

  • %ProgramFiles(x86)%\IIS Express\aspnetcore.dll

  • %ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

Schema

IIS

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml

IIS Express

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml

Konfiguráció

IIS

  • %windir%\System32\inetsrv\config\applicationHost.config

IIS Express

  • Visual Studio: {APPLICATION ROOT}\.vs\config\applicationHost.config

  • iisexpress.exe CLI: %USERPROFILE%\Documents\IISExpress\config\applicationhost.config

A fájlok a aspnetcore fájlban applicationHost.config való kereséssel találhatók meg.

Az ASP.NET Core modul (ANCM) egy natív IIS-modul, amely az IIS csővezetékhez a következőhöz csatlakozik:

Támogatott Windows-verziók:

  • Windows 7 vagy újabb
  • Windows Server 2008 R2 vagy újabb

A folyamaton belüli üzemeltetés során a modul egy folyamaton belüli kiszolgáló-implementációt használ az IIS-hez, az úgynevezett IIS HTTP Servert (IISHttpServer).

A folyamaton kívüli üzemeltetés esetén a modul csak a következővel Kestrelműködik: . A modul nem működik HTTP.sys.

Üzemeltetési modellek

Folyamaton belüli üzemeltetési modell

Ha egy alkalmazást a folyamatban lévő üzemeltetéshez szeretne konfigurálni, adja hozzá a <AspNetCoreHostingModel> tulajdonságot az alkalmazás projektfájljába a következő értékkel InProcess (a folyamaton kívüli üzemeltetés a következő értékkel OutOfProcessvan beállítva):

<PropertyGroup>
  <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

A folyamatban lévő üzemeltetési modell nem támogatott a .NET-keretrendszert célzó ASP.NET Core-alkalmazások esetében.

<AspNetCoreHostingModel> értéke nem érzékeny a kis- és nagybetűkre, így a inprocess és outofprocess érvényes értékek.

Ha a <AspNetCoreHostingModel> tulajdonság nem szerepel a fájlban, az alapértelmezett érték a következő OutOfProcess.

A folyamaton belüli üzemeltetésre a következő jellemzők vonatkoznak:

  • Az IIS HTTP-kiszolgáló (IISHttpServer) használatos Kestrel helyett. A folyamatban lévő CreateDefaultBuilder a következő műveletet hívja meg: UseIIS

    • Regisztrálja a IISHttpServer.
    • Konfigurálja azt a port- és alapelérési utat, amelyen a kiszolgálónak figyelnie kell, amikor a ASP.NET Core-modul mögött fut.
    • Konfigurálja a hostot az indítási hibák rögzítésére.
  • A requestTimeout attribútum nem vonatkozik a folyamatban lévő üzemeltetésre.

  • Az alkalmazáskészletek alkalmazások közötti megosztása nem támogatott. Alkalmazásonként egy alkalmazáskészletet használhat.

  • Ha webtelepítést használ, vagy manuálisan helyez el egyapp_offline.htm fájlt az üzembe helyezésben, előfordulhat, hogy az alkalmazás nem áll le azonnal, ha van nyitott kapcsolat. Egy websocket-kapcsolat például késleltetheti az alkalmazás leállítását.

  • Az alkalmazás architektúrájának (bititásának) és a telepített futtatókörnyezetnek (x64 vagy x86) meg kell egyeznie az alkalmazáskészlet architektúrájának.

  • A rendszer észleli az ügyfél kapcsolatának megszakadását. A HttpContext.RequestAborted lemondási token törlésre kerül, amikor az ügyfél kapcsolatát megszakad.

  • A ASP.NET Core 2.2.1 vagy korábbi GetCurrentDirectory verzióiban az IIS által indított folyamat feldolgozó könyvtárát adja vissza az alkalmazás könyvtára helyett (például C:\Windows\System32\inetsrv for w3wp.exe).

    Az alkalmazás aktuális könyvtárát meghatározó mintakódért tekintse meg a CurrentDirectoryHelpers osztályt. Hívja meg a SetCurrentDirectory metódust. További hívások az alkalmazás címtárának megadásához GetCurrentDirectory .

  • Folyamatba beágyazott üzemeltetés esetén a rendszer nem hívja meg AuthenticateAsync belsőleg a felhasználó inicializálásához. Ezért egy IClaimsTransformation implementáció, amelyet a jogcímek minden hitelesítés utáni átalakítására használnak, alapértelmezés szerint nincs aktiválva. A követeléseket implementációval történő IClaimsTransformation átalakításakor hívja meg AddAuthentication a hitelesítési szolgáltatások hozzáadásához.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddTransient<IClaimsTransformation, ClaimsTransformer>();
        services.AddAuthentication(IISServerDefaults.AuthenticationScheme);
    }
    
    public void Configure(IApplicationBuilder app)
    {
        app.UseAuthentication();
    }
    

Folyamaton kívüli üzemeltetési modell

Ha folyamaton kívüli üzemeltetésre szeretne konfigurálni egy alkalmazást, használja a projektfájlban az alábbi módszerek egyikét:

  • Ne adja meg a tulajdonságot <AspNetCoreHostingModel> . Ha a <AspNetCoreHostingModel> tulajdonság nem szerepel a fájlban, az alapértelmezett érték a következő OutOfProcess.
  • Állítsa a tulajdonság értékét <AspNetCoreHostingModel> a következő értékre OutOfProcess (a folyamaton belüli üzemeltetés a következővel InProcessvan beállítva):
<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

Az érték nem érzékeny a kis- és nagybetűkre, így a inprocess és a outofprocess érvényes értékek.

Kestrel kiszolgálót használ az IIS HTTP-kiszolgáló (IISHttpServer) helyett.

A folyamaton kívüli CreateDefaultBuilder a következőket hívja meg UseIISIntegration:

  • Konfigurálja azt a port- és alapelérési utat, amelyen a kiszolgálónak figyelnie kell, amikor a ASP.NET Core-modul mögött fut.
  • Konfigurálja a hostot az indítási hibák rögzítésére.

Üzemeltetési modell változásai

Ha a hostingModel beállítás módosul a web.config fájlban (ezt a Konfiguráció web.config szakaszban ismertetjük), a modul újrahasznosítja az IIS feldolgozói folyamatát.

Az IIS Express esetében a modul nem hasznosítja újra a feldolgozói folyamatot, hanem az aktuális IIS Express-folyamat kecses leállítását indítja el. Az alkalmazás következő kérése egy új IIS Express-folyamatot hoz létre.

Folyamat neve

Process.GetCurrentProcess().ProcessName jelentések w3wp (folyamatban lévő) vagy / (folyamaton kívüli).iisexpressdotnet

Számos natív modul, például a Windows-hitelesítés, aktív marad. A ASP.NET Core modullal aktív IIS-modulokkal kapcsolatos további információkért tekintse meg a ASP.NET Core-val rendelkező IIS-modulokat.

A ASP.NET core modul a következőket is lehetővé teszi:

  • Munkafolyamat környezeti változóinak beállítása.
  • Az indítási problémák elhárítása érdekében naplózza a fájltárolóba irányuló stdout kimenetet.
  • Windows-hitelesítési jogkivonatok továbbítása.

A ASP.NET Core Modul (ANCM) telepítése és használata

A ASP.NET Core modul telepítésével kapcsolatos utasításokért lásd : .NET Core Hosting Bundle telepítése. A ASP.NET core modul előre és hátra kompatibilis a .NET támogatott kiadásaival.

A jelentős változásokat és biztonsági figyelmeztetéseket a közlemények adattárában jelentjük. A hirdetmények egy címkeszűrő kiválasztásával egy adott verzióra korlátozhatók.

A web.config fájl konfigurálása

Az ASP.NET Core modul a web.config fájl aspNetCore csomópontjának system.webServer szakaszával van konfigurálva.

A rendszer a következő web.config fájlt teszi közzé egy keretrendszerfüggő üzembe helyezéshez , és konfigurálja a ASP.NET core modult a helykérések kezeléséhez:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet"
                  arguments=".\MyApp.dll"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

A következő web.config egy önálló üzembe helyezéshez van közzétéve.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\MyApp.exe"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

A InheritInChildApplications tulajdonság úgy van beállítva false , hogy jelezze, hogy a <helyelemben> megadott beállításokat nem öröklik az alkalmazás alkönyvtárában található alkalmazások.

Amikor egy alkalmazást üzembe helyez az Azure App Service-ben, az stdoutLogFile elérési út a következőre \\?\%home%\LogFiles\stdoutvan állítva: . Az elérési út menti az stdout-naplókat a LogFiles mappába, amely a szolgáltatás által automatikusan létrehozott hely.

Az IIS-alalkalmazás konfigurálással kapcsolatos információkért lásd: Gazdagép ASP.NET Core Windows rendszeren IIS-vel.

Az aspNetCore elem attribútumai

Attribute Description Alapértelmezett
arguments

Nem kötelező karakterlánc attribútum.

A végrehajtható fájlhoz megadott argumentumok a következőben: processPath.

disableStartUpErrorPage

Nem kötelező logikai attribútum.

Ha igaz, a rendszer letiltja az 502.5 – Folyamathiba lapot, és a web.config konfigurált 502-s állapotkódlap elsőbbséget élvez.

false
forwardWindowsAuthToken

Nem kötelező logikai attribútum.

Ha igaz, a rendszer a jogkivonatot kérésenként "MS-ASPNETCORE-WINAUTHTOKEN" fejlécként továbbítja a %ASPNETCORE_PORT% figyelő gyermekfolyamatnak. A feladata ennek a folyamatnak, hogy kérésenként meghívja a CloseHandle-t ezen a tokenen.

true
hostingModel

Nem kötelező karakterlánc attribútum.

Az üzemeltetési modellt folyamaton belüliként (InProcess/inprocess) vagy folyamaton kívüliként (OutOfProcess/outofprocess) adja meg.

OutOfProcess
outofprocess
processesPerApplication

Nem kötelező egész szám attribútum.

Az alkalmazásonként felpöröghető beállításban processPath megadott folyamatpéldányok számát adja meg.

†Folyamatközi üzemeltetés esetén az érték korlátozott 1.

A beállítás processesPerApplication nem ajánlott. Ez az attribútum egy későbbi kiadásban lesz eltávolítva.

Alapértelmezett: 1
Min: 1
Max: 100
processPath

Kötelező karakterlánc attribútum.

A HTTP-kéréseket figyelő folyamatot megnyitó végrehajtható fájl elérési útja. A relatív elérési utak támogatottak. Ha az elérési út a kezdőbetűvel .kezdődik, az elérési út a hely gyökeréhez viszonyítottnak minősül.

rapidFailsPerMinute

Nem kötelező egész szám attribútum.

Megadja, hogy a megadott processPath folyamat percenként hány alkalommal omolhat össze. Ha túllépi ezt a korlátot, a modul a perc hátralévő részében leállítja a folyamatot.

A folyamaton belüli üzemeltetés nem támogatott.

Alapértelmezett: 10
Min: 0
Max: 100
requestTimeout

Nem kötelező időbélyeg attribútum.

Azt az időtartamot adja meg, amíg a ASP.NET core modul a %ASPNETCORE_PORT%figyelési folyamat válaszára vár.

Az ASP.NET Core modulnak az ASP.NET Core 2.1-es vagy újabb verzióival szállított változataiban a requestTimeout értékét órákban, percekben és másodpercekben határozzák meg.

A folyamaton belüli üzemeltetésre nem vonatkozik. A folyamatban lévő üzemeltetés esetén a modul megvárja, amíg az alkalmazás feldolgozni fogja a kérést.

A karakterlánc percek és másodpercek érvényes értékei a 0–59 tartományba tartoznak. A 60 perc vagy másodperc értékének használata 500 belső kiszolgálóhibát eredményez.

Alapértelmezett: 00:02:00
Min: 00:00:00
Max: 360:00:00
shutdownTimeLimit

Nem kötelező egész szám attribútum.

Az időtartam másodpercben, ameddig a modul várja a végrehajtható fájl rendben való leállítását a app_offline.htm fájl észleléséig.

Alapértelmezett: 10
Min: 0
Max: 600
startupTimeLimit

Nem kötelező egész szám attribútum.

A modul az időtartamot másodpercben méri, amely alatt megvárja, hogy a végrehajtható fájl egy, a porton hallgató folyamatot indítson. Ha túllépi ezt az időkorlátot, a modul leáll a folyamaton.

Folyamatban lévő üzemeltetés esetén: A folyamat nem indul újra, és nem használja a rapidFailsPerMinute beállítást.

Folyamaton kívüli üzemeltetés esetén: A modul megkísérli újraindítani a folyamatot, amikor új kérést kap, és továbbra is megpróbálja újraindítani a folyamatot az azt követő bejövő kérelmeken, kivéve, ha az alkalmazás nem indítja el rapidFailsPerMinute az utolsó gördülő percben hányszor.

A 0 (nulla) érték nem számít végtelen időtúllépésnek.

Alapértelmezett: 120
Min: 0
Max: 3600
stdoutLogEnabled

Nem kötelező logikai attribútum.

Ha igaz, az stdout és a stderr a megadott processPath folyamathoz az stdoutLogFile fájlban megadott fájlra lesz átirányítva.

false
stdoutLogFile

Nem kötelező karakterlánc attribútum.

Adja meg azt az abszolút vagy relatív fájl elérési útját, amelyhez a rendszer stdout folyamatában naplózza stderr és processPath adatokat. A relatív elérési utak a webhely gyökeréhez vannak viszonyítva. Olyan elérési utak, amelyek .-tel kezdődnek, a hely gyökéréhez viszonyítottnak számítanak, és minden más elérési út abszolút elérési útként van kezelve. Az elérési úton megadott mappákat a modul hozza létre a naplófájl létrehozásakor. Az aláhúzásjel-elválasztók használatával időbélyeget, folyamatazonosítót és fájlkiterjesztést (.log) adunk hozzá az stdoutLogFile elérési út utolsó szegmenséhez. Ha a .\logs\stdout értékként van megadva, egy példa stdout napló stdout_20180205194132_1934.log néven kerül mentésre a logs mappába, amikor 2018.02.05-én 19:41:32-kor mentik, a folyamatazonosító 1934 értékével.

aspnetcore-stdout

Környezeti változók beállítása

Az attribútumban processPath lévő folyamathoz környezeti változók adhatók meg. Adjon meg egy környezeti változót egy <environmentVariable><environmentVariables> gyűjteményelem gyermekelemével. Az ebben a szakaszban beállított környezeti változók elsőbbséget élveznek a rendszer környezeti változóival szemben.

Az alábbi példa két környezeti változót állít be. ASPNETCORE_ENVIRONMENT konfigurálja az alkalmazás környezetét a következőre Development: . A fejlesztő ideiglenesen beállíthatja ezt az értéket a web.config fájlban, hogy a fejlesztői kivételoldal betöltődjön egy alkalmazáskivétel hibakeresésekor. CONFIG_DIR Egy példa egy felhasználó által definiált környezeti változóra, ahol a fejlesztő olyan kódot írt, amely beolvassa az értéket az indításkor, hogy létrehozhassa az alkalmazás konfigurációs fájljának betöltésének útvonalát.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="inprocess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>

Megjegyzés:

A környezet közvetlen web.config beállítása helyett, lehetőség van a <EnvironmentName> tulajdonságot belefoglalni a közzétételi profilba (.pubxml) vagy a projektfájlba. Ez a megközelítés a környezetet web.config állítja be a projekt közzétételekor:

<PropertyGroup>
  <EnvironmentName>Development</EnvironmentName>
</PropertyGroup>

Figyelmeztetés

Csak olyan átmeneti és tesztelési kiszolgálókon állítsa be a ASPNETCORE_ENVIRONMENT környezeti változót Development , amelyek nem érhetők el a nem megbízható hálózatokhoz, például az internethez.

app_offline.htm

Ha egy alkalmazás gyökérkönyvtárában egy névvel app_offline.htm rendelkező fájl található, a ASP.NET core modul megpróbálja elegánsan leállítani az alkalmazást, és leállítani a bejövő kérések feldolgozását. Ha az alkalmazás a megadott shutdownTimeLimitmásodpercek száma után is fut, a ASP.NET core modul leáll a futó folyamaton.

Amíg a app_offline.htm fájl jelen van, a ASP.NET core modul a fájl tartalmának visszaküldésével válaszol a app_offline.htm kérelmekre. app_offline.htm A fájl eltávolítása után a következő kérés elindítja az alkalmazást.

A folyamaton kívüli üzemeltetési modell használatakor előfordulhat, hogy az alkalmazás nem áll le azonnal, ha van nyitott kapcsolat. Egy websocket-kapcsolat például késleltetheti az alkalmazás leállítását.

Indítási hibalap

Mind a folyamatban lévő, mind a folyamaton kívüli üzemeltetés egyéni hibaoldalakat készít, amikor nem sikerül elindítani az alkalmazást.

Ha az ASP.NET Core modul nem találja a folyamaton belüli vagy a folyamaton kívüli kéréskezelőt, megjelenik egy 500.0 - Folyamaton belüli/Folyamaton kívüli Kezelő betöltési hiba állapotkódlap.

Folyamatban lévő üzemeltetés esetén, ha a ASP.NET core modul nem tudja elindítani az alkalmazást, megjelenik egy 500.30 – Indítási hiba állapotkódlap.

Folyamaton kívüli üzemeltetés esetén, ha a ASP.NET core modul nem indítja el a háttérfolyamatot, vagy a háttérfolyamat elindul, de nem figyeli a konfigurált portot, megjelenik egy 502.5 – Folyamathiba állapotkódlapja.

A lap letiltásához és az alapértelmezett IIS 5xx állapotkódlapra való visszatéréshez használja az disableStartUpErrorPage attribútumot. További információ az egyéni hibaüzenetek <konfigurálásáról: HTTP-hibák httpErrors>.

Napló létrehozása és átirányítása

Az ASP.NET Core modul átirányítja az stdout és stderr konzol kimenetét a lemezre, ha a stdoutLogEnabled elem stdoutLogFile és aspNetCore attribútumai be vannak állítva. Az elérési úton lévő stdoutLogFile mappákat a modul hozza létre a naplófájl létrehozásakor. Az alkalmazáskészletnek írási hozzáféréssel kell rendelkeznie ahhoz a helyhez, ahol a naplók meg vannak írva (írási engedély megadására szolgál IIS AppPool\{APP POOL NAME} , ahol a helyőrző {APP POOL NAME} az alkalmazáskészlet neve).

A naplók nem lesznek elforgatva, kivéve, ha a folyamat újrahasznosítása/újraindítása történik. A hoszt felelőssége, hogy korlátozza a naplók által használt lemezterületet.

A stdout-napló használata csak az alkalmazások indítási problémáinak elhárításához ajánlott az IIS-en való üzemeltetéskor vagy az IIS-hez a Visual Studióval való fejlesztési idő támogatásához, nem pedig a helyi hibakereséshez és az alkalmazás IIS Expresszel való futtatásához.

Ne használja az stdout naplót általános alkalmazásnaplózási célokra. Az ASP.NET Core-alkalmazások rutinnaplózásához használjon egy naplózási kódtárat, amely korlátozza a naplófájlok méretét, és elforgatja a naplókat. További információ: külső naplózási szolgáltatók.

A naplófájl létrehozásakor a rendszer automatikusan hozzáad egy időbélyeget és egy fájlkiterjesztést. A naplófájl neve úgy áll össze, hogy hozzáfűzi az időbélyeget, a folyamatazonosítót és a fájlkiterjesztést (.log) az stdoutLogFile elérési út utolsó szegmenséhez (általában stdout) aláhúzásjelekkel elválasztva. Ha az stdoutLogFile elérési út stdout-re végződik, egy 1934 PID-vel rendelkező alkalmazás naplója, amely 2018. 02. 05-én 19:42:32-kor lett létrehozva, az stdout_20180205194132_1934.log fájlnevet viseli.

Ha stdoutLogEnabled hamis, az alkalmazás indításakor előforduló hibákat a rendszer rögzíti, és legfeljebb 30 KB-ig bocsátja ki az eseménynaplóba. Az indítás után a rendszer minden további naplót elvet.

Az alábbi mintaelem aspNetCore konfigurálja az stdout-naplózást a relatív útvonalon .\log\. Győződjön meg arról, hogy az alkalmazáskészlet felhasználói identitása rendelkezik engedéllyel a megadott elérési útra való íráshoz.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout"
    hostingModel="inprocess">
</aspNetCore>

Amikor közzétesz egy alkalmazást az Azure App Service üzembe helyezéséhez, a Web SDK az stdoutLogFile értéket \\?\%home%\LogFiles\stdout értékre állítja. A %home környezeti változó előre definiálva van az Azure App Service által üzemeltetett alkalmazásokhoz.

Az elérési utak formátumáról további információt a Windows-rendszerek fájlútvonal-formátumai című témakörben talál.

Továbbfejlesztett diagnosztikai naplók

A ASP.NET core modul konfigurálható továbbfejlesztett diagnosztikai naplók biztosításához. Adja hozzá az <handlerSettings> elemet a <aspNetCore> elemhez web.config. A debugLevelTRACE beállítása magasabb szintű diagnosztikai információs hűséget tár fel.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

Az értékhez <handlerSetting> megadott elérési úton lévő mappákat (logs az előző példában) a modul nem hozza létre automatikusan, és az üzembe helyezés során már léteznie kell. Az alkalmazáskészletnek írási hozzáféréssel kell rendelkeznie ahhoz a helyhez, ahol a naplók meg vannak írva (írási engedély megadására szolgál IIS AppPool\{APP POOL NAME} , ahol a helyőrző {APP POOL NAME} az alkalmazáskészlet neve).

A hibakeresési szint (debugLevel) értékei közé tartozhat a szint és a hely is.

Szintek (a legkevésbé bőbeszédűtől a legbővebbig):

  • ERROR
  • FIGYELMEZTETÉS
  • INFORMÁCIÓ
  • NYOM

Helyek (több hely is engedélyezett):

  • KONZOL
  • EVENTLOG
  • FILE

A kezelő beállításai környezeti változókon keresztül is megadhatóak:

  • ASPNETCORE_MODULE_DEBUG_FILE: A hibakeresési naplófájl elérési útja. (Alapértelmezett: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: Hibakeresési szint beállítása.

Figyelmeztetés

Ne hagyja, hogy a hibakeresési naplózás engedélyezve legyen az üzemelő példányban a probléma elhárításához szükségesnél tovább. A napló mérete nem korlátozott. A hibakeresési napló engedélyezésének elhagyásával kimerítheti a rendelkezésre álló lemezterületet, és összeomlhat a kiszolgáló vagy az appszolgáltatás.

Tekintse meg a web.config konfiguráció használatának példáját a aspNetCore elemre a web.config fájlban.

A proxykonfiguráció HTTP protokollt és párosítási jogkivonatot használ

Csak a folyamaton kívüli üzemeltetésre vonatkozik.

A ASP.NET core modul Kestrel között létrehozott proxy a HTTP protokollt használja. Nem áll fenn a modul és Kestrel a kiszolgálótól távol lévő hely közötti forgalom lehallgatásának kockázata.

A párosítási token garantálja, hogy a fogadott Kestrel kéréseket az IIS proxizta, és nem más forrásból származtak. A párosítási jogkivonatot a modul egy környezeti változóba (ASPNETCORE_TOKEN) állítja be. A párosítási token minden proxizált kérés fejlécében (MS-ASPNETCORE-TOKEN) is elhelyezve van. Az IIS Middleware minden kapott kérést ellenőriz annak ellenőrzéséhez, hogy a párosítási jogkivonat fejlécének értéke megegyezik-e a környezeti változó értékével. Ha a token értékei nem egyeznek meg, a rendszer naplózza és elutasítja a kérést. A párosítási token környezeti változó, valamint a modul és Kestrel közötti forgalom nem érhetők el szerveren kívüli helyről. A párosítási jogkivonat értékének ismerete nélkül a kiberbűnözők nem küldhetnek be olyan kéréseket, amelyek megkerülik az IIS Middleware-ben való ellenőrzést.

ASP.NET core modul megosztott IIS-konfigurációval

A ASP.NET core modul telepítője a TrustedInstaller fiók jogosultságaival fut. Mivel a helyi rendszerfiók nem rendelkezik módosítási engedéllyel az IIS megosztott konfigurációja által használt megosztási útvonalhoz, a telepítő megtagadta a hozzáférést a megosztás fájljában található applicationHost.config modulbeállítások konfigurálásakor.

Ha megosztott IIS-konfigurációt használ ugyanazon a gépen, mint az IIS-telepítés, futtassa a ASP.NET Core Hosting Bundle telepítőt a OPT_NO_SHARED_CONFIG_CHECK következő paraméterrel 1:

dotnet-hosting-{VERSION}.exe OPT_NO_SHARED_CONFIG_CHECK=1

Ha a megosztott konfiguráció elérési útja nem ugyanazon a gépen található, mint az IIS-telepítés, kövesse az alábbi lépéseket:

  1. Tiltsa le az IIS megosztott konfigurációját.
  2. Indítsa el a telepítőt.
  3. Exportálja a frissített applicationHost.config fájlt a megosztásba.
  4. Engedélyezze újra az IIS megosztott konfigurációját.

Modulverzió és üzemeltetési csomag telepítőnaplói

A telepített ASP.NET core modul verziójának meghatározása:

  1. A tárhelyrendszeren navigáljon ide %windir%\System32\inetsrv.
  2. Keresse meg a aspnetcore.dll fájlt.
  3. Kattintson a jobb gombbal a fájlra, és válassza a Helyi menü Tulajdonságok parancsát .
  4. Válassza a Részletek lapot. A Fájl és a Termék verzió a modul telepített verzióját jelöli.

A modul üzemeltetési csomag telepítőnaplói a következő helyen C:\\Users\\%UserName%\\AppData\\Local\\Temptalálhatók: . A fájl neve dd_DotNetCoreWinSvrHosting__\{TIMESTAMP}_000_AspNetCoreModule_x64.log, ahol a helyőrző {TIMESTAMP} az időbélyeg.

Modul-, séma- és konfigurációs fájlhelyek

Modul

IIS (x86/amd64):

  • %windir%\System32\inetsrv\aspnetcore.dll

  • %windir%\SysWOW64\inetsrv\aspnetcore.dll

  • %ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

IIS Express (x86/amd64):

  • %ProgramFiles%\IIS Express\aspnetcore.dll

  • %ProgramFiles(x86)%\IIS Express\aspnetcore.dll

  • %ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

Schema

IIS

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml

IIS Express

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml

Konfiguráció

IIS

  • %windir%\System32\inetsrv\config\applicationHost.config

IIS Express

  • Visual Studio: {APPLICATION ROOT}\.vs\config\applicationHost.config

  • iisexpress.exe CLI: %USERPROFILE%\Documents\IISExpress\config\applicationhost.config

A fájlok a aspnetcore fájlban applicationHost.config való kereséssel találhatók meg.

A ASP.NET Core-modul (ANCM) egy natív IIS-modul, amely az IIS-folyamathoz csatlakozva továbbítja a webes kéréseket a háttérrendszerbeli ASP.NET Core-alkalmazásoknak.

Támogatott Windows-verziók:

  • Windows 7 vagy újabb
  • Windows Server 2008 R2 vagy újabb

A modul csak a következővel Kestrelműködik: . A modul nem kompatibilis a HTTP.sys.

Mivel ASP.NET Core-alkalmazások az IIS feldolgozói folyamattól eltérő folyamatban futnak, a modul a folyamatkezelést is kezeli. A modul elindítja a ASP.NET Core-alkalmazás folyamatát, amikor az első kérés megérkezik, és összeomlásakor újraindítja az alkalmazást. Ez lényegében ugyanaz a viselkedés, mint a windowsos folyamataktiválási szolgáltatás (WAS) által felügyelt, folyamatban lévő IIS-ben futó ASP.NET 4.x-es alkalmazások esetében.

Az alábbi ábra az IIS, a ASP.NET Core Modul és egy alkalmazás közötti kapcsolatot mutatja be:

ASP.NET Core modul

A kérések az internetről érkeznek a kernel módú HTTP.sys illesztőhöz. Az illesztőprogram átirányítja a kéréseket az IIS-hez a webhely konfigurált portján, általában a 80-at (HTTP) vagy a 443-at (HTTPS). A modul egy véletlenszerű porton továbbítja a kéréseket Kestrel az alkalmazáshoz, amely nem a 80-at vagy a 443-at.

A modul egy környezeti változón keresztül adja meg a portot indításkor, és az IIS Integration Middleware konfigurálja a kiszolgálót a figyelésre http://localhost:{port}. A rendszer további ellenőrzéseket végez, és a nem a modulból származó kéréseket elutasítja a rendszer. A modul nem támogatja a HTTPS-továbbítást, így a kérések akkor is HTTP-en keresztül továbbítódnak, ha az IIS HTTPS-en keresztül érkezik.

Miután Kestrel felveszi a kérést a modulból, a rendszer leküldi a kérést a ASP.NET Core köztes szoftver folyamatába. A köztes szoftver folyamat kezeli a kérést, és példányként HttpContext továbbítja azt az alkalmazás logikájának. Az IIS-integráció által hozzáadott köztes szoftver frissíti a sémát, a távoli IP-címet és az útvonalalapot, hogy lehetővé tegye a kérés továbbítását Kestrel. A rendszer visszaküldi az alkalmazás válaszát az IIS-nek, amely visszaküldi a kérést kezdeményező HTTP-ügyfélnek.

Számos natív modul, például a Windows-hitelesítés, aktív marad. A ASP.NET Core modullal aktív IIS-modulokkal kapcsolatos további információkért tekintse meg a ASP.NET Core-val rendelkező IIS-modulokat.

A ASP.NET core modul a következőket is lehetővé teszi:

  • Munkafolyamat környezeti változóinak beállítása.
  • Az indítási problémák elhárítása érdekében naplózza a fájltárolóba irányuló stdout kimenetet.
  • Windows-hitelesítési jogkivonatok továbbítása.

A ASP.NET Core Modul (ANCM) telepítése és használata

A ASP.NET Core modul telepítésével kapcsolatos utasításokért lásd : .NET Core Hosting Bundle telepítése.

A web.config fájl konfigurálása

Az ASP.NET Core modul a web.config fájl aspNetCore csomópontjának system.webServer szakaszával van konfigurálva.

A rendszer a következő web.config fájlt teszi közzé egy keretrendszerfüggő üzembe helyezéshez , és konfigurálja a ASP.NET core modult a helykérések kezeléséhez:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet"
                arguments=".\MyApp.dll"
                stdoutLogEnabled="false"
                stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

A következő web.config egy önálló üzembe helyezéshez van közzétéve.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath=".\MyApp.exe"
                stdoutLogEnabled="false"
                stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

Amikor egy alkalmazást üzembe helyez az Azure App Service-ben, az stdoutLogFile elérési út a következőre \\?\%home%\LogFiles\stdoutvan állítva: . Az elérési út menti az stdout-naplókat a LogFiles mappába, amely a szolgáltatás által automatikusan létrehozott hely.

Az IIS-alalkalmazás konfigurálással kapcsolatos információkért lásd: Gazdagép ASP.NET Core Windows rendszeren IIS-vel.

Az aspNetCore elem attribútumai

Attribute Description Alapértelmezett
arguments

Nem kötelező karakterlánc attribútum.

A processPathban megadott végrehajtható argumentumok.

disableStartUpErrorPage

Nem kötelező logikai attribútum.

Ha igaz, a rendszer letiltja az 502.5 – Folyamathiba lapot, és a web.config konfigurált 502-s állapotkódlap elsőbbséget élvez.

false
forwardWindowsAuthToken

Nem kötelező logikai attribútum.

Ha igaz, a rendszer a jogkivonatot kérésenként "MS-ASPNETCORE-WINAUTHTOKEN" fejlécként továbbítja a %ASPNETCORE_PORT% figyelő gyermekfolyamatnak. A feladata ennek a folyamatnak, hogy kérésenként meghívja a CloseHandle-t ezen a tokenen.

true
processesPerApplication

Nem kötelező egész szám attribútum.

Az alkalmazásonként felpöröghető folyamatpéldányok számát adja meg a processPath beállításban.

A beállítás processesPerApplication nem ajánlott. Ez az attribútum egy későbbi kiadásban lesz eltávolítva.

Alapértelmezett: 1
Min: 1
Max: 100
processPath

Kötelező karakterlánc attribútum.

A HTTP-kéréseket figyelő folyamatot megnyitó végrehajtható fájl elérési útja. A relatív elérési utak támogatottak. Ha az elérési út a kezdőbetűvel .kezdődik, az elérési út a hely gyökeréhez viszonyítottnak minősül.

rapidFailsPerMinute

Nem kötelező egész szám attribútum.

Megadja, hogy a processPathban megadott folyamat hányszor omlhat össze percenként. Ha túllépi ezt a korlátot, a modul a perc hátralévő részében leállítja a folyamatot.

Alapértelmezett: 10
Min: 0
Max: 100
requestTimeout

Nem kötelező időbélyeg attribútum.

Azt az időtartamot adja meg, amíg a ASP.NET core modul a %ASPNETCORE_PORT%figyelési folyamat válaszára vár.

Az ASP.NET Core modulnak az ASP.NET Core 2.1-es vagy újabb verzióival szállított változataiban a requestTimeout értékét órákban, percekben és másodpercekben határozzák meg.

Alapértelmezett: 00:02:00
Min: 00:00:00
Max: 360:00:00
shutdownTimeLimit

Nem kötelező egész szám attribútum.

Az időtartam másodpercben, ameddig a modul várja a végrehajtható fájl rendben való leállítását a app_offline.htm fájl észleléséig.

Alapértelmezett: 10
Min: 0
Max: 600
startupTimeLimit

Nem kötelező egész szám attribútum.

A modul az időtartamot másodpercben méri, amely alatt megvárja, hogy a végrehajtható fájl egy, a porton hallgató folyamatot indítson. Ha túllépi ezt az időkorlátot, a modul leáll a folyamaton. A modul megkísérli újraindítani a folyamatot, amikor új kérést kap, és továbbra is megpróbálja újraindítani a folyamatot az ezt követő bejövő kérelmeken, kivéve, ha az alkalmazás az utolsó gördülő percben nem tud elindulni a rapidFailsPerMinute alkalommal.

A 0 (nulla) érték nem számít végtelen időtúllépésnek.

Alapértelmezett: 120
Min: 0
Max: 3600
stdoutLogEnabled

Nem kötelező logikai attribútum.

Ha igaz, a processPath-ban megadott folyamat stdout és stderr kimenete az stdoutLogFile fájlra lesz átirányítva.

false
stdoutLogFile

Nem kötelező karakterlánc attribútum.

Megadja azt a relatív vagy abszolút fájl elérési útját, amelyhez a folyamatPathban megadott folyamatból származó stdout és stderr naplózva van. A relatív elérési utak a webhely gyökeréhez vannak viszonyítva. Olyan elérési utak, amelyek .-tel kezdődnek, a hely gyökéréhez viszonyítottnak számítanak, és minden más elérési út abszolút elérési útként van kezelve. Az elérési úton megadott mappáknak létezniük kell ahhoz, hogy a modul létrehozza a naplófájlt. Aláhúzásjel-elválasztók használatával időbélyeget, folyamatazonosítót és fájlkiterjesztést (.log) ad hozzá a stdoutLogFile elérési út utolsó szegmenséhez. Ha .\logs\stdout értékként van megadva, a rendszer egy példa stdout-naplót ment stdout_20180205194132_1934.log a naplók mappába, amikor 2018. 02. 05.-én 19:41:32-kor menti az 1934-ben megadott folyamatazonosítóval.

aspnetcore-stdout

Környezeti változók beállítása

Az attribútumban processPath lévő folyamathoz környezeti változók adhatók meg. Adjon meg egy környezeti változót egy <environmentVariable><environmentVariables> gyűjteményelem gyermekelemével.

Figyelmeztetés

Az ebben a szakaszban beállított környezeti változók ütköznek az azonos nevű rendszerkörnyezeti változókkal. Ha egy környezeti változó a web.config fájlban és a Windows rendszerszintjén is be van állítva, a web.config fájlból származó érték hozzá lesz fűzve a rendszer környezeti változójának értékéhez (például ASPNETCORE_ENVIRONMENT: Development;Development), ami megakadályozza az alkalmazás indítását.

Az alábbi példa két környezeti változót állít be. ASPNETCORE_ENVIRONMENT konfigurálja az alkalmazás környezetét a következőre Development: . A fejlesztő ideiglenesen beállíthatja ezt az értéket a web.config fájlban, hogy a fejlesztői kivételoldal betöltődjön egy alkalmazáskivétel hibakeresésekor. CONFIG_DIR Egy példa egy felhasználó által definiált környezeti változóra, ahol a fejlesztő olyan kódot írt, amely beolvassa az értéket az indításkor, hogy létrehozhassa az alkalmazás konfigurációs fájljának betöltésének útvonalát.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile="\\?\%home%\LogFiles\stdout">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>

Figyelmeztetés

Csak olyan átmeneti és tesztelési kiszolgálókon állítsa be a ASPNETCORE_ENVIRONMENT környezeti változót Development , amelyek nem érhetők el a nem megbízható hálózatokhoz, például az internethez.

app_offline.htm

Ha egy alkalmazás gyökérkönyvtárában egy névvel app_offline.htm rendelkező fájl található, a ASP.NET core modul megpróbálja elegánsan leállítani az alkalmazást, és leállítani a bejövő kérések feldolgozását. Ha az alkalmazás a megadott shutdownTimeLimitmásodpercek száma után is fut, a ASP.NET core modul leáll a futó folyamaton.

Amíg a app_offline.htm fájl jelen van, a ASP.NET core modul a fájl tartalmának visszaküldésével válaszol a app_offline.htm kérelmekre. app_offline.htm A fájl eltávolítása után a következő kérés elindítja az alkalmazást.

Indítási hibalap

Ha a ASP.NET core modul nem indítja el a háttérfolyamatot, vagy a háttérfolyamat elindul, de nem figyeli a konfigurált portot, megjelenik egy 502.5 – Folyamathiba állapotkódlap. Ha el szeretné tiltani ezt a lapot, és vissza szeretne térni az alapértelmezett IIS 502 állapotkódlapra, használja az disableStartUpErrorPage attribútumot. További információ az egyéni hibaüzenetek <konfigurálásáról: HTTP-hibák httpErrors>.

Napló létrehozása és átirányítása

Az ASP.NET Core modul átirányítja az stdout és stderr konzol kimenetét a lemezre, ha a stdoutLogEnabled elem stdoutLogFile és aspNetCore attribútumai be vannak állítva. Az elérési úton lévő stdoutLogFile mappákat a modul hozza létre a naplófájl létrehozásakor. Az alkalmazáskészletnek írási hozzáféréssel kell rendelkeznie a naplók írási helyéhez ( IIS AppPool\<app_pool_name> írási engedély megadásához).

A naplók nem lesznek elforgatva, kivéve, ha a folyamat újrahasznosítása/újraindítása történik. A hoszt felelőssége, hogy korlátozza a naplók által használt lemezterületet.

A stdout-napló használata csak az alkalmazások indítási problémáinak elhárításához ajánlott az IIS-en való üzemeltetéskor vagy az IIS-hez a Visual Studióval való fejlesztési idő támogatásához, nem pedig a helyi hibakereséshez és az alkalmazás IIS Expresszel való futtatásához.

Ne használja az stdout naplót általános alkalmazásnaplózási célokra. Az ASP.NET Core-alkalmazások rutinnaplózásához használjon egy naplózási kódtárat, amely korlátozza a naplófájlok méretét, és elforgatja a naplókat. További információ: külső naplózási szolgáltatók.

A naplófájl létrehozásakor a rendszer automatikusan hozzáad egy időbélyeget és egy fájlkiterjesztést. A naplófájl neve úgy áll össze, hogy hozzáfűzi az időbélyeget, a folyamatazonosítót és a fájlkiterjesztést (.log) az stdoutLogFile elérési út utolsó szegmenséhez (általában stdout), aláhúzásjelekkel elválasztva. Ha az stdoutLogFile elérési út stdout-ra végződik, a 2018.02.05-én 19:42:32 időpontban létrehozott, 1934 PID-vel rendelkező alkalmazás naplójának a fájlneve stdout_20180205194132_1934.log.

Az alábbi mintaelem aspNetCore konfigurálja az stdout-naplózást a relatív útvonalon .\log\. Győződjön meg arról, hogy az AppPool felhasználói identitása rendelkezik engedéllyel a megadott elérési útra való íráshoz.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout">
</aspNetCore>

Amikor közzétesz egy alkalmazást az Azure App Service üzembe helyezéséhez, a Web SDK az stdoutLogFile értéket \\?\%home%\LogFiles\stdout értékre állítja. A %home környezeti változó előre definiálva van az Azure App Service által üzemeltetett alkalmazásokhoz.

Naplózási szűrőszabályok létrehozásához tekintse meg a naplószűrő szabályok alkalmazása a ASP.NET Core naplózási dokumentációjának kódszakaszában.

Az elérési utak formátumáról további információt a Windows-rendszerek fájlútvonal-formátumai című témakörben talál.

A proxykonfiguráció HTTP protokollt és párosítási jogkivonatot használ

A ASP.NET core modul Kestrel között létrehozott proxy a HTTP protokollt használja. Nem áll fenn a modul és Kestrel a kiszolgálótól távol lévő hely közötti forgalom lehallgatásának kockázata.

A párosítási token garantálja, hogy a fogadott Kestrel kéréseket az IIS proxizta, és nem más forrásból származtak. A párosítási jogkivonatot a modul egy környezeti változóba (ASPNETCORE_TOKEN) állítja be. A párosítási token minden proxizált kérés fejlécében (MS-ASPNETCORE-TOKEN) is elhelyezve van. Az IIS Middleware minden kapott kérést ellenőriz annak ellenőrzéséhez, hogy a párosítási jogkivonat fejlécének értéke megegyezik-e a környezeti változó értékével. Ha a token értékei nem egyeznek meg, a rendszer naplózza és elutasítja a kérést. A párosítási token környezeti változó, valamint a modul és Kestrel közötti forgalom nem érhetők el szerveren kívüli helyről. A párosítási jogkivonat értékének ismerete nélkül a kiberbűnözők nem küldhetnek be olyan kéréseket, amelyek megkerülik az IIS Middleware-ben való ellenőrzést.

ASP.NET core modul megosztott IIS-konfigurációval

A ASP.NET core modul telepítője a TrustedInstaller-fiók jogosultságaival fut. Mivel a helyi rendszerfiók nem rendelkezik módosítási engedéllyel a megosztott IIS-konfiguráció által használt megosztási útvonalhoz, a telepítő hozzáférés-megtagadási hibát jelez, amikor megkísérli konfigurálni a modulbeállításokat a megosztásapplicationHost.config fájljában.

Megosztott IIS-konfiguráció használatakor kövesse az alábbi lépéseket:

  1. Tiltsa le az IIS megosztott konfigurációját.
  2. Indítsa el a telepítőt.
  3. Exportálja a frissített applicationHost.config fájlt a megosztásba.
  4. Engedélyezze újra az IIS megosztott konfigurációját.

Modulverzió és üzemeltetési csomag telepítőnaplói

A telepített ASP.NET core modul verziójának meghatározása:

  1. Az üzemeltetési rendszeren keresse meg a %windir%\System32\inetsrv fájlt.
  2. Keresse meg a aspnetcore.dll fájlt.
  3. Kattintson a jobb gombbal a fájlra, és válassza a Helyi menü Tulajdonságok parancsát .
  4. Válassza a Részletek lapot. A Fájl és a Termék verzió a modul telepített verzióját jelöli.

A modul üzemeltetési csomag telepítőnaplói a C:\Users\%UserName%\AppData\Local\Temp címen találhatók. A fájl neve dd_DotNetCoreWinSvrHosting__<timestamp>_000_AspNetCoreModule_x64.log.

Modul-, séma- és konfigurációs fájlhelyek

Modul

IIS (x86/amd64):

  • %windir%\System32\inetsrv\aspnetcore.dll

  • %windir%\SysWOW64\inetsrv\aspnetcore.dll

IIS Express (x86/amd64):

  • %ProgramFiles%\IIS Express\aspnetcore.dll

  • %ProgramFiles(x86)%\IIS Express\aspnetcore.dll

Schema

IIS

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml

IIS Express

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml

Konfiguráció

IIS

  • %windir%\System32\inetsrv\config\applicationHost.config

IIS Express

  • Visual Studio: {APPLICATION ROOT}\.vs\config\applicationHost.config

  • iisexpress.exe CLI: %USERPROFILE%\Documents\IISExpress\config\applicationhost.config

A fájlok megtalálhatók az aspnetcore keresésével az applicationHost.config fájlban.

További erőforrások