caso di studio - porting da asp.net 3.5 a 4.0
TRANSCRIPT
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