Condividi tramite


Cenni preliminari sull'esecuzione affiancata di più versioni in ASP.NET

Aggiornamento: novembre 2007

.NET Framework consente di installare più versioni di Common Language Runtime nello stesso computer. Per impostazione predefinita, quando si installa .NET Framework in un computer in cui è già presente il runtime, tutte le applicazioni ASP.NET vengono aggiornate automaticamente per l'utilizzo di questa versione di .NET Framework. Sebbene le versioni successive di .NET Framework siano progettate per conservare la compatibilità con le versioni precedenti, è possibile configurare un'applicazione ASP.NET per l'utilizzo di una specifica versione di runtime.

Vengono illustrati i seguenti argomenti:

  • Scenari

  • Funzionalità < inserire la tecnologia >

  • Informazioni di supporto

  • Esempi di codice

  • Riferimento alle classi

  • Risorse supplementari

  • Novità

Scenari

Torna all'inizio

Funzionalità

Torna all'inizio

Informazioni di supporto

Quando in un computer viene aggiornato un componente o un'applicazione, la versione precedente viene rimossa o sostituita con quella nuova. Se la nuova versione non è compatibile con quella precedente, nelle altre applicazioni che utilizzano il componente o l'applicazione si verificano in genere dei problemi. In .NET Framework è disponibile il supporto per l'esecuzione side-by-side, che consente di installare contemporaneamente nello stesso computer più versioni di un assembly o di un'applicazione. Dal momento che è possibile installare più versioni contemporaneamente, le applicazioni gestite consentono di selezionare la versione da utilizzare senza influire sulle altre applicazioni che utilizzano una diversa versione.

In ASP.NET si parla di esecuzione side-by-side quando le applicazioni installate nello stesso computer utilizzano versioni diverse di .NET Framework. Negli argomenti elencati di seguito vengono descritti il supporto dell'esecuzione side-by-side in ASP.NET e la configurazione di applicazioni ASP.NET per l'esecuzione side-by-side.

.NET Framework consente di installare più versioni di Common Language Runtime nello stesso computer. Per impostazione predefinita, quando si installa .NET Framework in un computer in cui è già presente il runtime, tutte le applicazioni ASP.NET vengono aggiornate automaticamente per l'utilizzo di questa versione di .NET Framework. Le sole eccezioni sono le applicazioni associate a una versione non compatibile o successiva del runtime. La compatibilità viene generalmente stabilita dal numero di versione di .NET Framework. In caso di differenze significative di versione si genera incompatibilità, mentre se le differenze di aggiornamento e numero di build sono minori non si verificano problemi di compatibilità. Sebbene le versioni successive di .NET Framework siano progettate per conservare la compatibilità con le versioni precedenti, è possibile configurare un'applicazione ASP.NET per l'utilizzo di una specifica versione di runtime.

Proprietà scriptmap per applicazioni ASP.NET

Quando nello stesso computer sono installate più versioni di .NET Framework, in ogni installazione è contenuta una versione specifica dell'estensione ISAPI ASP.NET (Aspnet_isapi.dll). Tale estensione determina la versione di .NET Framework che verrà utilizzata con un'applicazione. È possibile configurare un'applicazione ASP.NET per l'utilizzo di qualsiasi estensione ISAPI ASP.NET. Per specificare l'estensione ISAPI ASP.NET da utilizzare con un'applicazione ASP.NET, in IIS (Internet Information Services) viene registrata una proprietà scriptmap (talvolta denominata anche mapping di applicazione) per l'applicazione.

Tale proprietà associa un'estensione di nome file, ad esempio aspx, e un verbo HTTP, come GET e POST, all'estensione ISAPI appropriata. Quando ad esempio viene inviata una richiesta di un file aspx ad IIS, la proprietà scriptmap dell'applicazione fa in modo che IIS inoltri il file aspx alla versione appropriata dell'estensione ISAPI ASP.NET. La proprietà scriptmap di ogni applicazione ASP.NET viene generalmente impostata nella console di gestione di Internet Information Services e può essere applicata direttamente a un'applicazione o ereditata da un'applicazione padre. Per impostazione predefinita, quando si installa .NET Framework, le proprietà scriptmap di tutte le applicazioni ASP.NET esistenti sul computer vengono automaticamente aggiornate per utilizzare la nuova estensione ISAPI ASP.NET, a meno che l'applicazione non utilizzi una versione successiva o non compatibile.

Per semplificare la riconfigurazione della proprietà scriptmap di un'applicazione ASP.NET, ogni installazione di .NET Framework è dotata di una propria versione dello strumento di registrazione di ASP.NET su IIS (Aspnet_regiis.exe). In base all'impostazione predefinita, questo strumento viene installato nella seguente directory:

%system root%\Microsoft.NET\Framework\versionNumber

È possibile utilizzare questo strumento per eseguire il mapping di un'applicazione ASP.NET alla versione dell'estensione ISAPI ASP.NET corrispondente allo strumento.

Nota:

Poiché Aspnet_regiis.exe è associato a una versione specifica di .NET Framework, è necessario utilizzarne la versione appropriata per riconfigurare la proprietà scriptmap di un'applicazione ASP.NET. Tale strumento consente di riconfigurare la proprietà scriptmap di un'applicazione ASP.NET in modo che utilizzi solo la versione dell'estensione ISAPI ASP.NET ad esso corrispondente.

È anche possibile utilizzare lo strumento per visualizzare lo stato di tutte le versioni di ASP.NET installate, registrare la versione associata di ASP.NET, creare directory per lo script dei client ed eseguire altre operazioni di configurazione.

Per ulteriori informazioni sulle proprietà scriptmap e la configurazione IIS, vedere Setting Application Mappings in IIS 6.0 (IIS 6.0) (informazioni in lingua inglese). Per ulteriori informazioni sull'aggiornamento delle proprietà scriptmap di un'applicazione ASP.NET, vedere Strumento di ASP.NET per la registrazione di IIS (Aspnet_regiis.exe).

Contatori di prestazioni di ASP.NET

I contatori di prestazioni consentono di monitorare il funzionamento di ASP.NET dalla console delle prestazioni di Windows. Da ogni versione di .NET Framework viene installato un insieme distinto di oggetti contatore di prestazioni per il monitoraggio delle applicazioni ASP.NET e di ASP.NET nel suo insieme. Tali oggetti utilizzano rispettivamente le convenzioni di denominazione "ASP.NET Apps v.X.X.XXXX.X" e "ASP.NET v.X.X.XXXX.X", dove v.X.X.XXXX.X indica la versione di ASP.NET.

Da .NET Framework vengono inoltre installati i contatori delle prestazioni ASP.NET per il sistema e le applicazioni che, sebbene siano utilizzabili con tutte le versioni installate di ASP.NET, corrispondono sempre all'ultima versione installata. Se si disinstalla l'ultima versione di ASP.NET, i contatori vengono automaticamente riassociati all'ultima versione rimanente di ASP.NET.

Servizio di stato di ASP.NET

Il servizio di stato di ASP.NET può essere utilizzato per gestire lo stato sessione su un computer. Tutte le versioni di ASP.NET installate sullo stesso computer condividono il servizio di stato installato con l'ultima versione di ASP.NET. Tale versione è registrata con il nome di servizio aspnet_state. Pertanto, quando si disinstalla questa versione di ASP.NET, al suo posto viene registrata e utilizzata l'ultima versione del servizio rimanente sul computer. Per ulteriori informazioni sul servizio di stato ASP.NET, vedere Modalità stato sessione.

Server di stato SQL di ASP.NET

Il server di stato SQL di ASP.NET viene utilizzato per gestire lo stato di sessione in SQL su un computer. Tutte le versioni di ASP.NET installate nello stesso computer condividono il server di stato SQL installato con l'ultima versione di ASP.NET. Quando quest'ultima viene disinstallata, al suo posto viene registrata e utilizzata l'ultima versione rimanente sul computer. Per ulteriori informazioni sul server di stato SQL di ASP.NET, vedere Modalità stato sessione.

Gestione di più versioni di ASP.NET

.NET Framework consente di installare più versioni di Common Language Runtime nello stesso computer. In questo modo un'applicazione ASP.NET può utilizzare la versione desiderata senza conseguenze sulle altre applicazioni. Nelle sezioni elencate di seguito vengono descritte l'installazione, la disinstallazione e la ridistribuzione di più versioni di ASP.NET nello stesso computer.

Installazione di più versioni di ASP.NET

Per aggiungere una versione di ASP.NET a un computer, eseguire il programma di installazione di package ridistribuibile di .NET Framework (Dotnetfx.exe) per la versione che si desidera installare. In base all'impostazione predefinita, tutte le applicazioni ASP.NET esistenti vengono automaticamente riconfigurate durante l'installazione per utilizzare la versione di installazione, qualora siano soddisfatte le seguenti condizioni:

  • La versione di .NET Framework da installare è successiva alla versione attualmente mappata all'applicazione.

  • La versione di .NET Framework da installare è compatibile con la versione mappata all'applicazione. La compatibilità è in genere determinata dal numero di versione. Sono compatibili le modifiche ai numeri di revisione e di build secondari, ma non ai numeri di revisione principali.

    Nota:

    Sebbene le applicazioni ASP.NET vengano automaticamente aggiornate per utilizzare la versione di ASP.NET da installare qualora siano soddisfatte le condizioni precedenti, le impostazioni di configurazione personalizzate nel file Machine.config corrente non vengono trasferite al file Machine.config appena installato. If your application uses custom configuration settings, be sure to either manually update the new Machine.config file or use the ASP.NET IIS Registration tool (Aspnet_regiis.exe) to remap the application back to the previous version of ASP.NET.

Per evitare la modifica automatica del mapping di tutte le applicazioni esistenti alla versione di .NET Framework da installare, utilizzare l'opzione della riga di comando /noaspupgrade con il programma di installazione Dotnetfx.exe. Il comando riportato di seguito mostra la sintassi:

Dotnetfx.exe /c:"install /noaspupgrade"

Per ulteriori informazioni sul package ridistribuibile .NET Framework, vedere Ridistribuzione di .NET Framework.

Nota:

Quando .NET Framework viene installato attraverso l'elemento Installazione applicazioni del Pannello di controllo di Windows o la Configurazione guidata server, ASP.NET viene abilitato nella console di blocco della protezione per impostazione predefinita. Se invece viene installato tramite Microsoft Visual Studio, Windows Update o il package ridistribuibile di .NET Framework (Dotnetfx.exe), ASP.NET è disabilitato per impostazione predefinita.

Disinstallazione di una versione di ASP.NET

Se in un computer sono installate più versioni di ASP.NET, è possibile disinstallare una versione specifica. Per disinstallare ASP.NET, in genere è necessario disinstallare .NET Framework attraverso l'elemento Installazione applicazioni del Pannello di controllo di Windows. Durante il processo di disinstallazione, lo strumento di ASP.NET per la registrazione di IIS (Aspnet_regiis.exe) viene chiamato dal programma di installazione tramite l'opzione -u (flag di disinstallazione).

Nota:

Se si desidera disinstallare solo una versione di ASP.NET senza disinstallare la versione di .NET Framework associata, è possibile utilizzare direttamente Aspnet_regiis.exe. In ogni installazione di .NET Framework è contenuta una versione associata dello strumento. Per disinstallare solo ASP.NET, utilizzare l'opzione -u della versione dello strumento associata alla versione di ASP.NET che si desidera disinstallare. Per ulteriori informazioni, vedere Strumento di ASP.NET per la registrazione di IIS (Aspnet_regiis.exe).

L'opzione -u di Aspnet_regiis.exe esegue le seguenti azioni:

  • Tutte le applicazioni ASP.NET attualmente mappate alla versione di ASP.NET da disinstallare vengono rimappate all'ultima versione compatibile presente nel computer. Se non esistono versioni compatibili, la proprietà scriptmap dell'applicazione viene completamente rimossa.

    Attenzione:

    Poiché la rimozione delle proprietà farà in modo che IIS consideri le pagine ASP.NET come testo letterale, il codice sorgente potrebbe essere esposto al client.

  • Se la versione di ASP.NET da disinstallare è attualmente la versione più recente, il servizio stato ASP.NET viene mappato all'ultima versione compatibile. Se non esistono versioni compatibili, il servizio stato di ASP.NET verrà disinstallato. Il servizio stato di ASP.NET, condiviso tra tutte le versioni compatibili di ASP.NET, viene sempre mappato all'ultima versione installata di ASP.NET.

  • Vengono rimossi gli oggetti prestazioni e i contatori di prestazioni associati relativi alla versione disinstallata. Gli oggetti prestazioni e i contatori generici che si applicano a tutte le versioni installate di ASP.NET e quelli relativi alle applicazioni ASP.NET vengono diretti all'ultima versione installata ancora presente sul computer.

  • Se nel computer non resta alcuna installazione ulteriore di ASP.NET, l'account utente ASPNET e gli elenchi di controllo di accesso associati vengono rimossi.

Per informazioni su altri effetti dell'installazione di più versioni di ASP.NET, vedere Cenni preliminari sull'esecuzione affiancata di più versioni in ASP.NET.

Ridistribuzione di terze parti di .NET Framework

Le applicazioni di terze parti possono includere e installare .NET Framework come parte dell'installazione in una speciale licenza di ridistribuzione. In questo modo è possibile installare la versione di .NET Framework necessaria per l'esecuzione di un'applicazione. Il package ridistribuibile di .NET Framework (Dotnetfx.exe) consente di distribuire un'applicazione con il runtime. È possibile che lo script di installazione predefinito di Dotnetfx.exe non soddisfi le esigenze dell'applicazione. In tal caso, il programmatore ha la facoltà di decidere se utilizzare le opzioni descritte di seguito per installare .NET Framework nell'ambito dell'installazione dell'applicazione.

Per ulteriori informazioni sul package ridistribuibile .NET Framework, vedere Ridistribuzione di .NET Framework. Per ulteriori informazioni sul Contratto di Licenza con l'utente finale (EULA) del package ridistribuibile, vedere Informazioni per ottenere il package ridistribuibile per .NET Framework.

Disabilitazione degli aggiornamenti automatici della proprietà scriptmap

Per impostazione predefinita, quando si installa .NET Framework in un computer in cui è già presente un'installazione, tutte le applicazioni ASP.NET vengono automaticamente aggiornate per utilizzare la nuova versione di .NET Framework, a meno che non siano associate a una versione non compatibile o successiva del runtime. Solo un amministratore di sistema esegue in genere questo tipo di installazione. Quando .NET Framework viene installato come parte dell'installazione di un'applicazione, le altre applicazioni presenti sul computer non utilizzeranno tale versione del runtime.

Come parte dello script di installazione, lo strumento di ASP.NET per la registrazione di IIS (Aspnet_regiis.exe) viene in genere chiamato da Dotnetfx.exe tramite l'opzione -i per installare ASP.NET. L'opzione tenta di aggiornare le proprietà scriptmap di tutte le applicazioni ASP.NET esistenti. Per impedire che durante l'installazione vengano aggiornate automaticamente le proprietà scriptmap di altre applicazioni sul computer, utilizzare l'opzione /noaspnetupgrade quando si emette il comando Dotnetfx.exe. Se si seleziona questa opzione, il programma di installazione utilizzerà invece l'opzione -ir di Aspnet_regiis.exe, che consente di ignorare gli aggiornamenti automatici alla proprietà scriptmap, la documentazione predefinita e i passaggi di scambio MIME. Il comando riportato di seguito mostra la sintassi:

Dotnetfx.exe /c:"install /noaspupgrade"

Aggiornamento manuale delle proprietà scriptmap

A volte è necessario impostare manualmente le proprietà scriptmap di un'applicazione. Se per l'applicazione è necessaria la directory virtuale destinata alla versione di .NET Framework da installare, assicurarsi che dal programma di installazione dell'applicazione venga chiamato esplicitamente Aspnet_regiis.exe tramite l'opzione -s o -sn per impostare le proprietà scriptmap.

Di seguito viene riportata una riga di comando di esempio che aggiorna le proprietà scriptmap di un'applicazione denominata SampleApp1.

Aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1

Per ulteriori informazioni, vedere Strumento di ASP.NET per la registrazione di IIS (Aspnet_regiis.exe).

Unificazione degli assembly di .NET Framework

Poiché nell'esecuzione affiancata di diverse versioni è possibile che un'applicazione sia costituita da componenti compilati tramite versioni diverse di .NET Framework, possono verificarsi conflitti tra le dipendenze dei componenti. Si supponga, ad esempio, che per il componente A, compilato tramite .NET Framework versione 1.1, sia necessario utilizzare la versione 1.1 dell'assembly System.Data. Per il componente B, compilato tramite .NET Framework versione 1.1, è necessario utilizzare la versione 2.0 dell'assembly System.Data. Se le versioni degli assembly, pur non essendo compatibili, vengono caricate contemporaneamente, potrebbero verificarsi problemi di tipi non corrispondenti o di altro genere.

Modalità di determinazione da parte dell'applicazione della versione di .NET da utilizzare

Per consentire l'utilizzo di versioni diverse dello stesso assembly, quando un'applicazione utilizza componenti basati su versioni diverse di .NET Framework, la versione associata a un'applicazione determina la versione degli assembly .NET Framework utilizzata dall'applicazione in oggetto e da tutti i relativi componenti. Nell'esempio, se l'applicazione viene mappata alla versione 2.0 di .NET Framework, la versione 2.0 dell'assembly System.Data viene caricata e condivisa da tutti i componenti utilizzati nell'applicazione. Il riferimento del componente A alla versione 1.1 dell'assembly System.Data viene promosso in fase di esecuzione alla versione di riferimento 2.0.

Se si ottiene una versione aggiornata di un assembly specifico, è possibile associare l'applicazione all'assembly, indipendentemente dalla versione di .NET Framework a cui è mappata. A tale scopo, è possibile aggiungere elementi <bindingRedirect> al file Machine.config o Web.config. Tali elementi associano un'applicazione a un assembly aggiornato che sostituisce un assembly esistente per determinati tipi di applicazioni. Se, ad esempio, in futuro verrà rilasciata una versione aggiornata di System.Web.Service.dll in grado di supportare la versione 1.2 di SOAP, sarà possibile utilizzare tale versione nell'applicazione al posto della versione installata in origine con .NET Framework.

È possibile eseguire l'override anche di questo comportamento nel file di configurazione dell'host ASP.NET (Aspnet.config). In ASP.NET questo file viene utilizzato per assicurare che le versioni di System.Web.dll e System.Web.RegularExpressions.dll corrispondano sempre alla versione associata a un'applicazione, indipendentemente dagli eventuali override specificati nel file Web.config.

È anche possibile utilizzare un componente compilato tramite una versione successiva di ASP.NET in un'applicazione compilata con una versione precedente. La versione dell'ISAPI ASPNET associata a un'applicazione determina sempre la versione del runtime utilizzata per un'applicazione. Se l'applicazione è configurata per l'utilizzo della versione precedente di .NET Framework, il componente verrà automaticamente reindirizzato in fase di esecuzione per utilizzare anche tale versione.

Quando si utilizza un componente compilato con una versione successiva di .NET Framework in un'applicazione compilata in una versione precedente, prendere in considerazione quanto segue:

  • Assicurarsi che il componente non utilizzi alcuna funzionalità o dipenda da comportamenti specifici della versione successiva di .NET Framework, in quanto queste funzionalità potrebbero non essere disponibili nella versione precedente del runtime.

  • ASP.NET utilizza le proprietà scriptmap in IIS per associare un'applicazione a una versione del runtime. Gli elementi di configurazione <supportedRuntime> e <requiredRuntime> non possono essere utilizzati per le applicazioni ASP.NET.

In alternativa, se la versione di runtime utilizzata per compilare i componenti è installata nel computer, è anche possibile riconfigurare l'applicazione per utilizzare la versione di runtime successiva. Poiché le versioni successive di .NET Framework sono in genere progettate per mantenere la compatibilità con le versioni precedenti, sarà possibile continuare a utilizzare gran parte delle funzionalità dell'applicazione senza apportare troppe modifiche. È tuttavia opportuno verificare con attenzione che l'esecuzione dell'applicazione con una nuova versione di .NET Framework non determini l'introduzione di errori.

Torna all'inizio

Esempi di codice

Argomenti relativi alle procedure e alle procedure dettagliate

Torna all'inizio

Riferimento alle classi

Torna all'inizio

Risorse supplementari

Torna all'inizio

Novità

Torna all'inizio

Vedere anche

Riferimenti

Torna all'inizio

Altre risorse

Esecuzione affiancata di diverse versioni