Domanda

Ho un'applicazione con 2 directory (libri ed esportazione). Se creiamo un libro o una pagina di un libro nell'applicazione, viene aggiunta una directory con l'id della pagina (questo è per il caricamento delle risorse). Se eliminiamo una pagina, la pagina (e la sua directory) viene rimossa dal database e dal filesystem.

Tuttavia, ciò ha comportato una perdita di sessione (anche un riavvio dell'applicazione). Ho cercato qualcosa su Google e ho trovato il seguente link . Sembra essere un problema in ASP.NET 2.0 (e 3.5). Qualcuno ha una soluzione per questo problema.

Ora stiamo pensando di scrivere un servizio che pulisca le directory di notte. Ma ci deve essere un'altra soluzione per questo no? Oh e mettere la directory fuori dalla directory virtuale non è un'opzione.

È stato utile?

Soluzione

  

Oh e mettendo la directory fuori   la directory virtuale non è un   opzione.

Mettere la directory fuori dalla directory virtuale è l'unica soluzione che ho trovato (finora). Quello che puoi fare è creare un collegamento (giunzione) nel file system in modo che la directory appaia all'interno della directory virtuale, ad esempio:

  • Il nostro sito Web (directory virtuale) si trova in C: \ projectX \ website
  • la directory dei dati (dove creiamo / eliminiamo file e cartelle) si trova in C: \ projectX \ data
  • quindi creiamo un collegamento che rende disponibile la cartella di dati come C: \ projectX \ website \ data

Il collegamento viene creato utilizzando il programma Linkd.exe (disponibile nel kit di risorse di Windows), con il seguente comando:

linkd c:\projectX\website\data c:\projectX\data

Ora c: \ projectX \ website \ data è un collegamento / nodo che punta alla directory dei dati reali. Puoi lavorare con il link come se fosse una directory fisica.

es. nel tuo sito web puoi accedervi usando questo codice:

Server.MapPath("~/data")

E puoi anche usare Esplora file di Windows e navigare in C: \ projectX \ website \ data. Sembra proprio una directory reale.

Altri suggerimenti

Prova a disabilitare il monitoraggio del file system. Questo impedirà la tua sessione viva. Questo l'articolo può essere utile per te.

Sembra esserci un hotfix supportato che raggiunge lo stesso dell'articolo citato da Sachin (disattiva le notifiche di modifica dei file in un sito Web).

Controlla questo articolo in Microsoft KB per ulteriori informazioni.

Ma dal momento che hai menzionato in un commento, che non hai accesso al server, immagino che anche questo non ti aiuterà nel tuo caso.

Per archiviare i file di dati che vengono frequentemente aggiornati, creati ed eliminati, è necessario utilizzare la cartella App_Data nella radice del sito Web. Stati della cartella MSDN per App_Data:

  

Contiene i file di dati dell'applicazione   tra cui file MDF, file XML, come   così come altri file di archivio dati. Il   La cartella App_Data è utilizzata da ASP.NET 2.0   per archiviare il locale di un'applicazione   database, che può essere utilizzato per   mantenere l'appartenenza e il ruolo   informazioni.

Controlla anche Q & amp; Una sezione per l'utilizzo della cartella App_Data: Domanda sulla cartella App_Data

Ho avuto lo stesso problema. La soluzione è esternalizzare la gestione della sessione utilizzando il servizio stato ASP.Net. L'unico inconveniente è che ogni oggetto inserito nella sessione deve essere serializzabile, poiché viene trasferito al servizio dello stato e viceversa.

Al momento non ho la possibilità di fornire ulteriori collegamenti, ma google ti aiuterà, ora che sai cosa cercare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top