A cosa serve la cartella App_Data utilizzata in Visual Studio?


156

Quando si crea una nuova applicazione ASP.NET in Visual Studio, vengono automaticamente creati un paio di file e cartelle. Viene chiamata una di quelle cartelle App_Data.

Inoltre, quando si pubblica un sito Web selezionando l'opzione di menu Build->Publishè disponibile una casella di controllo Include files from the App_Data folder.

Ho ragione supponendo che i file inseriti in questo file e le sue sottocartelle non saranno accessibili attraverso il web? Ad esempio, sarebbe sicuro inserire in quella cartella le risorse che intendo utilizzare solo dal codice dell'applicazione?

Qual è l'uso reale previsto della App_Datacartella?

MODIFICARE:

Grazie per tutte le risposte Dalle risposte ricevute finora sono interessato principalmente a due punti menzionati:

  1. App_Data è essenzialmente un punto di archiviazione per l'archivio dati basato su file
  2. Non dovrebbe essere visualizzabile dal Web ed è un luogo in cui l'app Web può archiviare e leggere i dati

Qualcuno sarebbe in grado di specificare come è garantito il "non visualizzabile dal web"? Posso fare affidamento su questo fatto quando eseguo una distribuzione standard o devo controllare anche alcune impostazioni IIS sul server.

Nella situazione in cui ho una serie di file pdf che voglio essere accessibile solo dall'applicazione. La cartella App_Data sarebbe il posto giusto da usare o dovrei creare una cartella separata e impostare manualmente IIS per garantire che non sia accessibile dal Web?

Risposte:


119

App_Data è essenzialmente un punto di archiviazione per archivi di dati basati su file (al contrario di un archivio di database del server SQL, ad esempio). Alcuni semplici siti ne fanno uso per il contenuto archiviato come XML, ad esempio, in genere dove i costi di hosting per un DB sono costosi.


8
Grazie annakata per questa risposta. Penso che il punto importante da aggiungere sia che, per impostazione predefinita, il contenuto di App_Data non è visualizzabile dal Web come indicato da JaredPar. e anche come hai commentato "questo comportamento può essere modificato da * .config httphandlers"
padn,

La cartella app_data contiene i riferimenti ai servizi Web locali? La mia applicazione web funziona perfettamente in esecuzione .net F5. Ma i servizi web non funzionano dopo l'imballaggio e la distribuzione in ISS ... :(
bonCodigo

1
Inoltre questa cartella viene utilizzata per l'archiviazione di file di database locali.
Andrei Khotko,

1
Una cosa che non è stata menzionata è che IIS riavvia il processo Web quando viene modificato un file, ma App_Data è escluso da questo!
Peter

43

in IIS, evidenzia la macchina, fai doppio clic su "Richiedi filtro", apri la scheda "Segmenti nascosti". "App_Data" è elencato lì come una cartella riservata. Sì, so che questo thread è davvero vecchio, ma questo è ancora applicabile.


25

L'utilizzo previsto di App_data è l'archiviazione dei dati dell'applicazione affinché il processo Web acceda. Non dovrebbe essere visualizzabile dal Web ed è un luogo in cui l'app Web può archiviare e leggere i dati.


7
Non solo "non dovrebbe", qualsiasi cosa in quella cartella viene bloccata da ASP.NET
John Sheehan,

@Giovanni, avevo l'impressione che esistessero modi per "cambiare" quel comportamento. Sì, sicuramente male farlo, ma non so quanto sia comune o no
JaredPar,

Come viene ottenuto "non visualizzabile"? La cartella App_data avrebbe impostazioni specifiche in IIS?
Padn,

@padn, non sono sicuro al 100% dello stack, ma è in un caso speciale in IIS o nello stack Asp.Net. msdn.microsoft.com/en-us/library/ex526337.aspx
JaredPar

2
iirc questo comportamento può essere modificato da * .config httphandlers
annakata

15

È un posto dove mettere un database incorporato, come SQL Server Express, Access o SQLite.


1
O qualsiasi altro dato che il sito potrebbe utilizzare come, ad esempio, file XML (come un elenco di stati / paesi / ecc.)
John Sheehan,

1
È un database solo allora? Posso dire alcuni file pdf, ad esempio, a cui voglio accedere solo tramite il codice, ad esempio usando il metodo Response.TransmitFile?
padd,

5
nulla - il concetto di dati non specifica un tipo di file o un formato
annakata

13

La cartella App_Data è una cartella in cui il processo di lavoro asp.net dispone anche dei diritti di sistema dei file, ma non viene pubblicato tramite il server Web.

Ad esempio lo usiamo per aggiornare un CSV locale di un contatto modulo di . Se il metodo preferito di e-mail non riesce o è richiesta una query sull'origine dati, i file App_Data sono presenti.

Non è l'ideale, ma è un buon fallback.


10

Dalla documentazione sulla struttura delle cartelle dei progetti Web ASP.NET in MSDN:

È possibile conservare i file del progetto Web in qualsiasi struttura di cartelle adatta alla propria applicazione. Per semplificare il lavoro con l'applicazione, ASP.NET riserva alcuni nomi di file e cartelle che è possibile utilizzare per tipi specifici di contenuto.

App_Data contiene file di dati dell'applicazione inclusi file di database .mdf, file XML e altri file di archivio dati. La cartella App_Data viene utilizzata da ASP.NET per archiviare il database locale di un'applicazione, ad esempio il database per conservare le informazioni sull'appartenenza e sul ruolo. Per ulteriori informazioni, vedere Introduzione all'affiliazione e comprensione della gestione dei ruoli .


7

L'intenzione principale è quella di conservare i file di database dell'applicazione.

E no, questo non sarà accessibile dal web per impostazione predefinita.


7

Lo usiamo come area di archiviazione temporanea per i file CSV caricati. Una volta caricato, un metodo ajax elabora ed elimina il file.


6

L'utilizzo previsto per App_Data è l'archiviazione del file relativo al database. Di solito file .mdf di SQL Server Express.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.