Caso di Studio - Porting da ASP.NET 3.5 a 4.0

Post on 07-Jul-2015

81 views 0 download

Transcript of Caso di Studio - Porting da ASP.NET 3.5 a 4.0

CASO DI STUDIO:PORTING VERSO ASP.NET 4.0

Marco Assandri

03 Giugno 2010

Inizio delPorting

A me non ha funzionato. A voi potrebbe funzionare!

Se non ha funzionato fatelo a mano per ogni progetto della soluzione!

Problematiche riscontrate

Problematiche riscontrate e soluzioni

• Membership

• Browsers

• Request Validation

• ASP.NET 4 Prohibited

• Application Pool

• eurl.axd

Membership spostata

La Membership è stata spostata e ora si trova nell’assemblySystem.Web.ApplicationServices.dll .

Quindi è necessario aggiungere una referencealla nuova dll.

Membership spostata

Definizione browser aggiornate

I file di browser sono stati aggiornati. Alcuni aggiunti ed altri eliminati.

L’utilizzo di file .browser utilizzati per versioni precedenti di asp.net come chrome.browser e safari.browser non sono più necessari e portano eccezioni a runtime.

Definizione browser aggiornate

Definizione browser aggiornate

Soluzione: cancellare i file .browser non necessari dalla directory App_Browsers.

Non sembra essere presente il w3c.browser necessario per validare siti XHTML 1.1. Conviene quindi tenerlo se abbiamo tale necessità.

Request Validation

Non è più possibile disabilitare a livello di pagina il ValidateRequest in quanto il sistema di validazione di ASP.NET 4.0 è cambiato, scatta prima del BeginRequest e avviene su tutte le richieste invece che solo per gli aspx.

Request Validation

Se abbiamo necessità di utilizzare il vecchio modello e/o disabilitare a livello di pagina il ValidateRequest dobbiamo inserire nel web.config

<httpRuntime requestValidationMode="2.0" />

ASP.NET 4 Prohibited su IIS 6

Una volta installato il .NET framework 4.0 su Windows Server 2003 lo stato è come Prohibited.

Bisogna settarlo come Allowed altrimenti si ottengono 404.

ASP.NET 4 Prohibited su IIS 6

Application Pool

Il comportamento di default di IIS 6 è utilizzare lo stesso Application Pool per più siti web.

Pur non essendo la soluzione ideale, spesso i siti sono configurati in questo modo.

Non è possibile far girare 2 versioni del framework sullo stesso Application Pool. Tuttavia il sito potrebbe funzionare randomicamente dando l’illusione che tutto sia ok. Tuttavia l’event log ci indica tale problema.

Application Pool

La soluzione ideale è utilizzare un Application Pool dedicato per ogni sito Web e comunque tutte le applicazione .NET 4 devono avere un Application Pool in cui girano solo applicazioni .NET 4.

Application PoolSu IIS 6 cambiare la versione del framework dal pannello ASP.NET e usare un Application Pool dedicato.

Application PoolSu IIS 7 e 7.5 di default l’Application Pool è dedicato. Bisogna settare la versione del frameworkdell’Application Pool alla 4.0.30319.

eurl.axd

Su IIS 6 se abbiamo una Child Application che gira ancora con la versione 2.0 e il sito principale gira sulla versione 4.0, si verifica l’errore:

System.Web.HttpException: Path '/[yourApplicationRoot]/eurl.axd/[Value]' was not found.

e la Child Application non gira.

eurl.axd

Se non è possibile convertire la Child Application alla versione 4.0 è necessario svolgere i seguenti passi.

• Aprire REGEDIT e andare suHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0

• Creare una chiave DWORD chiamataEnableExtensionlessUrls.

• Settare EnableExtensionlessUrls a 0.

Risorse

Per altre problematiche non trattate durante questo esempio di porting è disponibile una casistica al seguente indirizzo:

ASP.NET 4.0 Breaking Changes