Dobrý den, mám otázku ohledně nežádoucí recyklace ASP.NET aplikace, ke které dochází při změně adresářové struktury. Moje aplikace vypadá po vypublikování zjednodušeně asi takto: - MyApplication (kořenový adresář aplikace) - bin (obsahuje .dll po vypublikování) - styles (obsahuje .css soubory) - jsripts (obashuje jquery a .js soubory) - webforms (obsahuje .aspx soubory) - temp (obsahuje dočasné soubory uživatelů) global.asax web.config default.html Problém vzniká v adresáři "/temp". Tento adresář je po spuštění události application_start prázdný. Ve chvíli, kdy se do aplikace přihlásí první uživatel, vytvoří se uvitř adresáře "temp" podadresář s GUID jeho relace. Pokud uživatel uploaduje nějaký soubor do aplikace, tak se nahraje právě do této jeho podsložky, kde je s ním možné dále pracovat. (Měnit pomocí aplikace obsah, importovat z něho do databáze, apod.) Doposud je vše v pořádku. Problém nastává až ve chvíli, kdy se uživatel odhlásí. Jelikož nechci, aby se mi na aplikačním serveru skladovaly již nepotřebné soubory a složky, tak jsem na událost, při které se uživatel odhlašuje, navázal odstranění celého jeho podadresáře, který byl při jeho přihlášení dynamicky vytvořen. A zde právě docházi k nechtěné recyklaci aplikace:
Sub Logout(UserGUID As String)
Dim Path As String = HttpContext.Current.Server.MapPath("~/temp/" + UserGUID)
If System.IO.Directory.Exists(Path) Then
System.IO.Directory.Delete(Path, True)
End If
End Sub
Zajímavé je, že pokud uživatel do adresáře nic nenahrál, tak se při jeho odhlášení adresář odstraní a k recyklaci aplikace nedojde. Je možné nějak v tomto případě zabránit v recyklování aplikace? Chápu, že pokud něco změnim v adresáři bin, nebo v souboru web.config, tak se aplikace musí znovu zkompilovat. Ale pokud byly soubory a složky dynamicky vytvořené až během životních cyklů aplikace, tak proč by neměly jít také odstraňovat? Předem děkuji za jakoukoli radu. Petr
|