Application_End richiamato dopo operazioni di I/O su disco

martedì 18 dicembre 2012 - 12.53
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  Windows Server 2003  |  Visual Studio Express  |  SQL Server 2008

luigidibiasi Profilo | Guru

Salve a tutti,
sto sviluppando un piccolo progetto in asp.net (framework 2.0.x) e ho notato un comportamento strano del server iis (versione 6, su win2003)

L'app pool per il sito è configurato in modo da assumere identità di "sistema" dunque presumo abbia tutti i permessi possibili.

In application_start inizializzo un oggetto che poi salvo in Application("")

Se in una pagina aspx eseguo molte operazioni di I/O tramite il namespace my.computer etc la pagina viene correttamente eseguita ma al termine (dopo il flush) mi viene richiamato application_end senza che si sia verificato nessun errore...

Presumo sia un problema di thread o qualcosa di simile però prima di creare un eseguibile e richiamarlo tramite shell domando al forum... magari qualcuno ha avuto il mio stesso problema.

Non uso web garden quindi ho un unico processo attivo.
Grazie in anticipo.
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

andrestu Profilo | Expert

si è normale l'applicazione viene riavviata a seguito di N modifiche al filesystem, cè un oggetto (FileChangesMonitor) che monitora l'attività sul file system ed è responsabile di ciò.
se fai un pò di ricerca sulla rete ci sono diverse soluzioni che fermano il monitor in modo da poter tranquillamente fare molteplici operazioni di IO, di seguito un esempio di codice che puoi inserire in Application_start:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Con Aspnet 4 forse, e sottolineo FORSE, viene data la possibilità di scegliere tramite web.config quali cartelle escludere dal monitoring, questa è però una info che non ti do per certa devi documentarti, sono sincero forse mi sto confondendo con altro, anzi se trovi la modalità per non usare codice fammi sapere.

PS: se usi un servizio di hosting come Aruba configurato con Net4 il codice che tenta di stoppare il filemonitoring potrebbe causarti una "security exception"



Andrea Restucci - Web Developer

luigidibiasi Profilo | Guru

Effettivamente il restart avviene solo se eseguo modifiche su cartelle posizionate dentro la cartella dell'applicazione... ho aggirato il problema spostando tutte le operazioni di I/O fuori e non si riavvia più...

Domani provo la tua soluzione.
Ti ringrazio per la risposta :D



Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5