Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 10-versie van dit artikel voor de huidige release.
Waarschuwing
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie het .NET- en .NET Core-ondersteuningsbeleid voor meer informatie. Zie de .NET 10-versie van dit artikel voor de huidige release.
De web.config is een bestand dat wordt gelezen door IIS en de ASP.NET Core Module om een app te configureren die wordt gehost met IIS.
web.config bestandslocatie
Als u de ASP.NET Core-module correct wilt instellen, moet het web.config bestand aanwezig zijn op het hoofdpad van de inhoud (meestal het basispad van de app) van de geïmplementeerde app. Dit is dezelfde locatie als het fysieke pad van de website dat aan IIS is verstrekt. Het web.config bestand is vereist in de hoofdmap van de app om het publiceren van meerdere apps met behulp van Web Deploy in te schakelen.
Gevoelige bestanden bestaan op het fysieke pad van de app, zoals {ASSEMBLY}.runtimeconfig.json, {ASSEMBLY}.xml (XML-documentatieopmerkingen) en {ASSEMBLY}.deps.json, waarbij de tijdelijke aanduiding {ASSEMBLY} de assemblynaam is. Wanneer het web.config bestand aanwezig is en de site normaal wordt gestart, worden deze gevoelige bestanden niet door IIS gebruikt als ze worden aangevraagd. Als het web.config bestand ontbreekt, een onjuiste naam heeft of de site niet kan configureren voor normaal opstarten, kan IIS gevoelige bestanden openbaar verwerken.
Het web.config bestand moet altijd aanwezig zijn in de implementatie, correct benoemd en de site kunnen configureren voor normaal opstarten. Verwijder het web.config bestand nooit uit een productie-implementatie.
Als een web.config bestand niet aanwezig is in het project, wordt het bestand gemaakt met het juiste processPath en arguments om de ASP.NET Core-module te configureren en verplaatst naar gepubliceerde uitvoer.
Als een web.config bestand aanwezig is in het project, wordt het bestand getransformeerd met de juiste processPath en arguments om de ASP.NET Core Module te configureren en verplaatst naar gepubliceerde uitvoer. De transformatie wijzigt geen IIS-configuratie-instellingen in het bestand.
Het web.config bestand kan aanvullende IIS-configuratie-instellingen bieden waarmee actieve IIS-modules worden beheren. Zie het artikel IIS-modules voor informatie over IIS-modules die aanvragen kunnen verwerken met ASP.NET Core-apps.
Een MSBuild-doel (_TransformWebConfig) verwerkt het maken, transformeren en publiceren van het web.config bestand wanneer het project wordt gepubliceerd. Dit doel is aanwezig in de Web SDK-doelen (Microsoft.NET.Sdk.Web). De SDK wordt boven aan het projectbestand ingesteld:
<Project Sdk="Microsoft.NET.Sdk.Web">
Als u wilt voorkomen dat de Web SDK het web.config bestand transformeert, gebruikt u de <IsTransformWebConfigDisabled> eigenschap in het projectbestand:
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
Wanneer u voorkomt dat de web-SDK het bestand transformeert, moet de ontwikkelaar processPath en arguments handmatig instellen. Zie ASP.NET Core Module (ANCM) voor IIS-voor meer informatie.
Configuratie van ASP.NET Core-module met web.config
De ASP.NET Core-module is geconfigureerd met de aspNetCore sectie van het system.webServer knooppunt in het web.config bestand van de site.
Het volgende web.config bestand wordt gepubliceerd voor een frameworkafhankelijke implementatie en configureert de ASP.NET Core-module voor het afhandelen van siteaanvragen:
<?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>
Het volgende web.config wordt gepubliceerd voor een zelfstandige implementatie:
<?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>
De InheritInChildApplications eigenschap is zo ingesteld false dat de instellingen die zijn opgegeven in het <location> element, niet worden overgenomen door apps die zich in een submap van de app bevinden.
Wanneer een app wordt geïmplementeerd in Azure App Service, wordt het stdoutLogFile pad ingesteld op \\?\%home%\LogFiles\stdout. Het pad slaat stdout-logboeken op in de LogFiles map, wat een locatie is die automatisch door de dienst wordt aangemaakt.
Zie Geavanceerde configuratie voor informatie over configuratie van IIS-subtoepassingen.
Kenmerken van het aspNetCore element
| Attribute | Description | Verstek |
|---|---|---|
arguments |
Optioneel tekenreekskenmerk. Argumenten voor het uitvoerbare bestand dat is opgegeven in |
|
disableStartUpErrorPage |
Optioneel Booleaanse kenmerk. Indien waar, wordt de pagina 502.5 - Procesfout onderdrukt en heeft de 502-statuscodepagina die is geconfigureerd in de |
false |
forwardWindowsAuthToken |
Optioneel Booleaanse kenmerk. Zo ja, wordt het token doorgestuurd naar het onderliggende proces dat op |
true |
hostingModel |
Optioneel tekenreekskenmerk. Hiermee specificeert u het hostingmodel als in-process ( |
OutOfProcess
/
outofprocess indien niet aanwezig |
processesPerApplication |
Optioneel integer-attribuut. Hiermee specificeert u het aantal exemplaren van het proces, zoals gespecificeerd in de †Voor in-process hosting is de waarde beperkt tot Instelling |
Standaardwaarde: 1Min: 1Max: 100† |
processPath |
Vereist tekenreekskenmerk. Pad naar het uitvoerbare bestand dat een proces start dat luistert naar HTTP-aanvragen. Relatieve paden worden ondersteund. Als het pad begint met |
|
rapidFailsPerMinute |
Optioneel integer-attribuut. Hiermee geeft u het aantal keren op dat het opgegeven proces Niet ondersteund met in-process hosting. |
Standaardwaarde: 10Min: 0Max: 100 |
requestTimeout |
Optioneel tijdspannekenmerk. Hiermee geeft u de duur op waarvoor de ASP.NET Core Module wacht op een reactie van het proces dat luistert op %ASPNETCORE_PORT%. In versies van de ASP.NET Core-module die is geleverd met de release van ASP.NET Core 2.1 of hoger, wordt de Is niet van toepassing op in-process hosting. Voor in-process hosting wacht de module totdat de app de aanvraag verwerkt. Geldige waarden voor de minuten- en secondensegementen van de tekenreeks bevinden zich in het bereik van 0-59. Het gebruik van |
Standaardwaarde: 00:02:00Min: 00:00:00Max: 360:00:00 |
shutdownTimeLimit |
Optioneel integer-attribuut. De duur in seconden dat de module wacht totdat het uitvoerbare bestand netjes wordt afgesloten zodra het |
Standaardwaarde: 10Min: 0Max: 600 |
startupTimeLimit |
Optioneel integer-attribuut. De duur in seconden dat de module wacht tot het uitvoerbare bestand een proces start dat op de poort luistert. Als deze tijdslimiet wordt overschreden, wordt het proces door de module uitgeschakeld. Tijdens het hosten in-process: het proces wordt niet opnieuw gestart en gebruikt de instelling Bij het hosten van een out-of-process: de module probeert het proces opnieuw te starten wanneer er een nieuwe aanvraag wordt ontvangen. Het blijft proberen het proces opnieuw te starten voor volgende binnenkomende aanvragen, tenzij de app het aantal keren dat het niet is opgestart in de laatste roterende minuut Een waarde van 0 (nul) wordt niet beschouwd als een oneindige time-out. |
Standaardwaarde: 120Min: 0Max: 3600 |
stdoutLogEnabled |
Optioneel Booleaanse kenmerk. Als waar, worden |
false |
stdoutLogFile |
Optioneel tekenreekskenmerk. Hiermee geeft u het relatieve of absolute bestandspad waarvoor |
aspnetcore-stdout |
Omgevingsvariabelen instellen
Omgevingsvariabelen kunnen worden opgegeven voor het proces in het processPath kenmerk. Geef een omgevingsvariabele op met het <environmentVariable> onderliggende element van een <environmentVariables> verzamelingselement. Omgevingsvariabelen die in deze sectie zijn ingesteld, hebben voorrang op omgevingsvariabelen van het systeem.
In het volgende voorbeeld worden twee omgevingsvariabelen ingesteld in web.config.
ASPNETCORE_ENVIRONMENT hiermee configureert u de omgeving van de app in Development. Een ontwikkelaar kan deze waarde tijdelijk instellen in het web.config bestand om af te dwingen dat de uitzonderingspagina voor ontwikkelaars wordt geladen bij het opsporen van fouten in een app-uitzondering.
CONFIG_DIR is een voorbeeld van een door de gebruiker gedefinieerde omgevingsvariabele, waarbij de ontwikkelaar code heeft geschreven waarmee de waarde bij het opstarten wordt gelezen om een pad te vormen voor het laden van het configuratiebestand van de app.
<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>
Opmerking
Een alternatief voor het rechtstreeks instellen van de omgeving in web.config is het opnemen van de <EnvironmentName> eigenschap in het publicatieprofiel (.pubxml) of projectbestand. Met deze benadering wordt de omgeving web.config ingesteld wanneer het project wordt gepubliceerd.
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
Waarschuwing
Stel de ASPNETCORE_ENVIRONMENT omgevingsvariabele Development alleen in op faserings- en testservers die niet toegankelijk zijn voor niet-vertrouwde netwerken, zoals internet.
Configuratie van IIS met web.config
IIS-configuratie wordt beïnvloed door de <system.webServer> sectie van web.config IIS-scenario's die functioneel zijn voor ASP.NET Core-apps met de ASP.NET Core-module. IIS-configuratie is bijvoorbeeld functioneel voor dynamische compressie. Als IIS is geconfigureerd op serverniveau om dynamische compressie te gebruiken, kan het <urlCompression> element in het bestand van web.config de app dit uitschakelen voor een ASP.NET Core-app.
Zie de volgende artikelen voor meer informatie:
-
Configuratiereferentie voor
<system.webServer> - ASP.NET Core Module (ANCM) voor IIS-
- IIS-modules met ASP.NET Core
Als u omgevingsvariabelen wilt instellen voor afzonderlijke apps die worden uitgevoerd in geïsoleerde app-pools (ondersteund voor IIS 10.0 of hoger), raadpleegt u de AppCmd.exe opdrachtsectie van het artikel Omgevingsvariabelen <environmentVariables> in de IIS-referentiedocumentatie.
Configuratiesecties van web.config
Configuratiesecties van ASP.NET 4.x-apps in web.config worden niet gebruikt door ASP.NET Core-apps voor configuratie.
<system.web><appSettings><connectionStrings><location>
ASP.NET Core-apps zijn geconfigureerd met andere configuratieproviders. Zie Configuratie voor meer informatie.
Transformeer web.config
Zie web.config als u wilt transformeren bij het publiceren. Mogelijk moet u web.config transformeren bij het publiceren om omgevingsvariabelen in te stellen op basis van de configuratie, het profiel of de omgeving.