Questo post deriva in realtà da una interessantissima discussione sul NG di microsoft di settimana scorsa.
Un utente del forum ha postato un problema riguardante la cancellazione di directory: praticamente ogni volta che chiamava un System.IO.Directory.Delete di una cartella che creava dentro App_Data, veniva persa la sessione. Io ho risposto con baldanza "beh grazie, App_Data è una cartella riservata. Sopsta sotto un'altra cartella e vedrai che va tutto"... ed infatti non andava nulla....
Io, sempre meno baldanzoso, mi sono messo a fare un paio di prove, ed ho notato una "feature" (bug?) di ASP.NET 2.0 non presente nelle versioni precedenti: la cancellazione di una _qualsiasi_ directory che risiede nella virtual directory causa un riciclo dell'intero appDomain!! Credevo succedesse solo sotto l'ASP.NET Development Server, invece ho controllato e capita anche sotto 2003 e XP.....
Come scritto qui:
http://forums.asp.net/thread/1209642.aspx
http://weblogs.asp.net/owscott/archive/2006/02/21/438678.aspx
http://blogs.msdn.com/toddca/archive/2005/12/01/499144.aspx
questa è una "feature" nota, anche se non si parla di questo cambio di comportamento in maniera chiara (e io penso che quando viene introdotta una "feature" così importante forse bisognerebbe parlarne a caratteri cubitali, altrimenti mi puzza di bug.....)
Penso a tutte le applicazioni di gestione documentale create in 1.1 che portate in 2.0 causano improvvisi problemi di perdita sessione (nonchè performance, il riclclo ovviamente causa il jitting e su siti medio/grandi questo uccide la macchina...)
La soluzione? Beh, spostare la directory di repository fuori dalla virtual directory (però dopo a sto punto creare un secondo sito per poterci accedere.... weird....) altrimenti usare linkd come spiegato nel secondo blog per creare un collegamento logico tra cartelle e permetterne sia le operazioni in lettura/scrittura sia la condivisione via http!