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

23
CASO DI STUDIO: PORTING VERSO ASP.NET 4.0 Marco Assandri 03 Giugno 2010

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

Page 1: 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

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

Inizio delPorting

Page 3: Caso di Studio - Porting da ASP.NET 3.5 a 4.0
Page 4: Caso di Studio - Porting da ASP.NET 3.5 a 4.0

A me non ha funzionato. A voi potrebbe funzionare!

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

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

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

Problematiche riscontrate

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

Problematiche riscontrate e soluzioni

• Membership

• Browsers

• Request Validation

• ASP.NET 4 Prohibited

• Application Pool

• eurl.axd

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

Membership spostata

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

Quindi è necessario aggiungere una referencealla nuova dll.

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

Membership spostata

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

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.

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

Definizione browser aggiornate

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

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à.

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

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.

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

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" />

Page 15: Caso di Studio - Porting da ASP.NET 3.5 a 4.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.

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

ASP.NET 4 Prohibited su IIS 6

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

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.

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

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.

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

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

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

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.

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

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.

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

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.

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

Risorse

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

ASP.NET 4.0 Breaking Changes