Le immagini che sono nella cartella App_Data non mostrati in del browser
Domanda
Quando ho creato immagine proprietà URL a ASP controllo delle immagini che si trova nella cartella App_Data, immagine sta mostrando nella pagina di visualizzazione di progettazione, ma non nel browser.
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" ImageUrl="~/App_Data/p3.jpg" />
</div>
</form>
Sembra essere semplice, ma non è che mostra l'immagine.
Soluzione
La cartella App_Data
è una cartella speciale riservata ai dati come file di database e così via, e non il rendering di qualsiasi contenuto sul web. Ciò è di progettazione, e intenzionale e non può essere modificato (per quanto ne so).
Le immagini non sicuramente non appartengono nella sottocartella App_Data
- metterli in una cartella /images
o qualcosa di più appropriato
Altri suggerimenti
Le immagini devono mai essere memorizzati nella cartella App_Data
. Questo è riservato per i file che non dovrebbe mai essere serviti per l'utente direttamente, come ad esempio i file di database mdb, ecc.
Vorrei creare una cartella /Resources
o /Resources/Images
la radice del sito.
Non sono d'accordo. Quando si nasconde le immagini nella cartella App_Data e creare il proprio http-handler di proteggere le vostre immagini e può aggiungere copyright-testo, ecc sulle immagini prima di mostrare.
I fare questo quando ho highres immagini non mi wan't a tutti di ottenere, e avendo il http-handler downscale l'immagine e mettere su qualche copyrighttext. Grande!
Va bene, il tempo di fare l'impossibile ... Anche se non è possibile caricare le immagini direttamente dalla cartella App_Data, è possibile scrivere il proprio gestore HTTP, che leggerà il file di immagine dalla cartella App_Data e inviarlo al client. Sarebbe un work-around, ma, in generale, i dati è pensato per i dati che solo l'applicazione in grado di leggere. Avendo un gestore lettura dei dati, si può ancora tornare quelle immagini.
Ma è cattiva pratica e se si desidera lavorare per me, devi essere licenziato immediatamente !!!
Dipende! ;)
Ci sono buone ragioni per salvare le immagini in App_Data
. In situazioni in cui gli utenti possono caricare i propri file o loghi Proteggerà questi file e non renderli accessibili ad altri utenti o di essere pubblico.
La maggior parte importante, è l'unico modo per avere diversi file per server / istanza distribuzione.
Quando si distribuisce la vostra applicazione è possibile proteggere i file caricati dagli utenti per ogni istanza del server attivando "Escludi file da App_Data" nella configurazione della distribuzione.
Se si desidera accedere a questi file da url utilizzare un gestore di download, downloadfile.ashx per esempio.
Spero che questo aiuti.
Contents dalla cartella App_Data possono essere serviti ma non direttamente.
Accesso diretto non è possibile e indiretta non è raccomandato. E 'intenzionale.
tuttavia l'aggiunta di un percorso virtuale può fare questo. Vedere questo
Penso che i primi tre risposta serve il vostro scopo.
memorizzano le immagini nella cartella delle risorse sia globali o locali queste sono anche le cartelle speciali e contenuti sono accessibili programaticaly.