Moduli IIS con ASP.NET Core
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere Criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Alcuni dei moduli nativi e tutti i moduli gestiti di IIS non sono disponibili per l'elaborazione delle richieste per le app ASP.NET Core. In molti casi, ASP.NET Core offre un'alternativa agli scenari gestiti dai moduli nativi e gestiti di IIS.
Moduli nativi
La tabella indica i moduli di IIS nativi che funzionano con le app ASP.NET Core e il modulo ASP.NET Core.
Modulo | Funzionante con le app ASP.NET Core | Opzione di ASP.NET Core |
---|---|---|
Autenticazione anonimaAnonymousAuthenticationModule |
Sì | |
Autenticazione di baseBasicAuthenticationModule |
Sì | |
Autenticazione mapping certificazione clientCertificateMappingAuthenticationModule |
Sì | |
CGICgiModule |
No | |
Convalida della configurazioneConfigurationValidationModule |
Sì | |
Errori HTTPCustomErrorModule |
No | Middleware delle tabelle codici di stato |
Registrazione personalizzataCustomLoggingModule |
Sì | |
Documento predefinitoDefaultDocumentModule |
No | Middleware dei file predefiniti |
Autenticazione digestDigestAuthenticationModule |
Sì | |
Esplorazione directoryDirectoryListingModule |
No | Middleware di esplorazione directory |
Compressione dinamicaDynamicCompressionModule |
Sì | Middleware di compressione delle risposte |
Traccia delle richieste non riusciteFailedRequestsTracingModule |
Sì | Registrazione di ASP.NET Core |
Memorizzazione nella cache dei fileFileCacheModule |
No | Middleware di memorizzazione nella cache delle risposte |
Memorizzazione nella cache HTTPHttpCacheModule |
No | Middleware di memorizzazione nella cache delle risposte |
Registrazione HTTPHttpLoggingModule |
Sì | Registrazione di ASP.NET Core |
Reindirizzamento HTTPHttpRedirectionModule |
Sì | Middleware di riscrittura URL |
Traccia HTTPTracingModule |
Sì | |
Autenticazione mapping certificati client IISIISCertificateMappingAuthenticationModule |
Sì | |
Restrizioni per IP e dominiIpRestrictionModule |
Sì | |
Filtri ISAPIIsapiFilterModule |
Sì | Middleware |
ISAPIIsapiModule |
Sì | Middleware |
Supporto del protocolloProtocolSupportModule |
Sì | |
Filtro richiesteRequestFilteringModule |
Sì | Middleware di riscrittura URL IRule |
Monitoraggio richiesteRequestMonitorModule |
Sì | |
Riscrittura URL†RewriteModule |
Sì | Middleware di riscrittura URL |
Server-Side IncludeServerSideIncludeModule |
No | |
Compressione staticaStaticCompressionModule |
No | Middleware di compressione delle risposte |
Contenuto staticoStaticFileModule |
No | Middleware dei file statici |
Memorizzazione nella cache dei tokenTokenCacheModule |
Sì | |
Memorizzazione nella cache degli URIUriCacheModule |
Sì | |
Autorizzazione URLUrlAuthorizationModule |
Sì | ASP.NET Core Identity |
WebDavWebDAV |
No | |
Autenticazione di WindowsWindowsAuthenticationModule |
Sì |
†Il modulo di isFile
riscrittura URL e isDirectory
i tipi di corrispondenza non funzionano con le app ASP.NET Core a causa delle modifiche apportate alla struttura di directory.
Moduli gestiti
I moduli gestiti non funzionano con le app ASP.NET Core ospitate quando la versione CLR .NET del pool di app è impostata su Nessun codice gestito. In molti casi, ASP.NET Core offre alternative a livello di middleware.
Modulo | Opzione di ASP.NET Core |
---|---|
AnonymousIdentification | |
DefaultAuthentication | |
FileAuthorization | |
FormsAuthentication | Cookie Middleware di autenticazione |
OutputCache | Middleware di memorizzazione nella cache delle risposte |
Profilo | |
RoleManager | |
ScriptModule-4.0 | |
Sessione | Middleware di sessione |
UrlAuthorization | |
UrlMappingsModule | Middleware di riscrittura URL |
UrlRoutingModule-4.0 | ASP.NET Core Identity |
WindowsAuthentication |
Modifiche dell'applicazione Gestione IIS
Quando si usa Gestione IIS per configurare le impostazioni, il file web.config dell'app viene modificato. Se si distribuisce un'app e si include web.config, le eventuali modifiche apportate con Gestione IIS vengono sovrascritte dal file web.config distribuito. Se vengono apportate modifiche al file web.config sul server, copiare immediatamente il file web.config aggiornato sul server nel progetto locale.
Disabilitazione dei moduli IIS
Se un modulo IIS configurato a livello di server deve essere disabilitato per un'app, un'aggiunta al file web.config dell'app consente di disabilitare il modulo. È possibile mantenere il modulo e disattivarlo tramite un'impostazione di configurazione (se disponibile) oppure rimuovere il modulo dall'app.
Disattivazione del modulo
Molti moduli offrono un'impostazione di configurazione che consente di disabilitarli senza rimuovere il modulo dall'app. Questo è il modo più semplice e rapido per disattivare un modulo. Ad esempio, il modulo di reindirizzamento HTTP può essere disabilitato tramite l'elemento <httpRedirect>
in web.config:
<configuration>
<system.webServer>
<httpRedirect enabled="false" />
</system.webServer>
</configuration>
Per altre informazioni sulla disabilitazione dei moduli con le impostazioni di configurazione, seguire i collegamenti nella sezione Elementi figlio di IIS <system.webServer>.
Rimozione dei moduli
Se si sceglie di rimuovere un modulo con un'impostazione in web.config, sbloccare innanzitutto il modulo e la sezione <modules>
di web.config:
Sbloccare il modulo a livello di server. Selezionare il server IIS nella barra laterale Connessioni di Gestione IIS. Aprire Moduli nell'area IIS. Selezionare il modulo nell'elenco. Nella barra laterale Azioni sulla destra selezionare Sblocca. Se la voce di azione per il modulo viene visualizzata come Blocca, il modulo è già sbloccato e non è richiesta alcuna azione. Sbloccare tutti i moduli che si prevede di rimuovere da web.config in un secondo momento.
Distribuire l'app senza una
<modules>
sezione in web.config. Se un'app viene distribuita con un file web.config contenente la<modules>
sezione senza aver sbloccato prima la sezione in Gestione IIS, Configuration Manager genera un'eccezione quando si tenta di sbloccare la sezione. Di conseguenza, distribuire l'app senza una sezione<modules>
.Sbloccare la
<modules>
sezione di web.config. Nella barra laterale Connessioni selezionare il sito Web in Siti. Nell'area Gestione aprire Editor configurazione. Usare i controlli di navigazione per selezionare la sezionesystem.webServer/modules
. Nella barra laterale Azioni sulla destra selezionare Sblocca per la sezione. Se la voce di azione per la sezione del modulo viene visualizzata come Blocca sezione, la sezione del modulo è già sbloccata e non è richiesta alcuna azione.Aggiungere una sezione
<modules>
al file web.config locale dell'app con un elemento<remove>
per rimuovere il modulo dall'app. Aggiungere più elementi<remove>
per rimuovere più moduli. Se le modifiche a web.config vengono apportate sul server, apportare immediatamente le stesse modifiche al file web.config del progetto in locale. La rimozione di un modulo in questo modo non influisce sull'uso del modulo con le altre app nel server.<configuration> <system.webServer> <modules> <remove name="MODULE_NAME" /> </modules> </system.webServer> </configuration>
Per aggiungere o rimuovere i moduli per IIS Express con web.config, modificare applicationHost.config per sbloccare la sezione <modules>
:
Aprire {APPLICATION ROOT}\.vs\config\applicationhost.config.
Individuare l'elemento
<section>
per i moduli IIS e modificareoverrideModeDefault
daDeny
aAllow
:<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
Individuare la sezione
<location path="" overrideMode="Allow"><system.webServer><modules>
. Per tutti i moduli che si desidera rimuovere, impostarelockItem
datrue
afalse
. Nell'esempio seguente il modulo CGI è sbloccato:<add name="CgiModule" lockItem="false" />
Dopo aver sbloccato la sezione
<modules>
e i singoli moduli, è possibile aggiungere o rimuovere i moduli IIS con il file web.config dell'app per l'esecuzione dell'app in IIS Express.
Un modulo IIS può anche essere rimosso con Appcmd.exe. Specificare MODULE_NAME
e APPLICATION_NAME
nel comando:
Appcmd.exe delete module MODULE_NAME /app.name:APPLICATION_NAME
Ad esempio, rimuovere DynamicCompressionModule
dal sito Web predefinito:
%windir%\system32\inetsrv\appcmd.exe delete module DynamicCompressionModule /app.name:"Default Web Site"
Configurazione minima dei moduli
I soli moduli necessari per eseguire un'app ASP.NET Core sono il modulo di autenticazione anonima e il modulo ASP.NET Core.
Il modulo di memorizzazione nella cache degli URI (UriCacheModule
) consente a IIS di memorizzare nella cache la configurazione del sito Web a livello di URL. Senza questo modulo, IIS deve leggere e analizzare la configurazione a ogni richiesta, anche quando lo stesso URL viene richiesto ripetutamente. L'analisi della configurazione a ogni richiesta comporta una riduzione significativa delle prestazioni. Anche se il modulo di memorizzazione nella cache degli URI non è strettamente necessario per l'esecuzione di un'app ASP.NET Core ospitata, è consigliabile abilitare il modulo di memorizzazione nella cache degli URI per tutte le distribuzioni di ASP.NET Core.
Il modulo di memorizzazione nella cache HTTP (HttpCacheModule
) implementa la cache di output di IIS e anche la logica per la memorizzazione degli elementi nella cache HTTP.sys. Senza questo modulo, il contenuto non viene più memorizzato nella cache in modalità kernel e i profili cache vengono ignorati. La rimozione del modulo di memorizzazione nella cache HTTP in genere ha effetti negativi sulle prestazioni e l'uso delle risorse. Anche se il modulo di memorizzazione nella cache HTTP non è strettamente necessario per l'esecuzione di un'app ASP.NET Core ospitata, è consigliabile abilitare il modulo di memorizzazione nella cache HTTP per tutte le distribuzioni di ASP.NET Core.
Risorse aggiuntive
- Introduction to IIS Architectures: Modules in IIS (Introduzione alle architetture IIS: moduli di IIS)
- IIS Modules Overview (Panoramica dei moduli IIS)
- Customizing IIS 7.0 Roles and Modules (Personalizzazione di ruoli e moduli di IIS 7.0)
- IIS <system.webServer>