Server.MapPath non funziona
-
02-10-2019 - |
Domanda
Sto cercando di accedere ai file presenti in una directory che virtuale creata in IIS per la prima volta, ma sto ottenendo risultati strani.
OS: Windows XP Pro
IIS: 5.1
Piattaforma di sviluppo: Visual Studio 2008
Lingua: C #
Directory virtuale Nome: portale
Percorso locale: C: \ digital_communications_report_portal
percorso predefinito web locale: c: \ inetpub \ wwwroot
posso scaricare il file in http: //localhost/portal/testFile.xlsx senza alcuna problema.
I provare uno di questi
string realFilename = Server.MapPath(ResolveUrl("~/portal/testFile.xlsx"));
string realFilename = Server.MapPath(ResolveUrl("localhost/portal/testFile.xlsx"));
e ottenere "C: \ Documents and Settings \ jjohnson \ Documenti \ Visual Studio 2008 \ WebSites \ clientsite \ localhost \ portal \ testFile.xlsx", che è il mio percorso del progetto con il percorso virtuale diede una pacca sulla alla fine e non è un percorso valido. Ho provare a prendere la tilde o localhost e ottenere un "Impossibile mappare il percorso '/portal/testFile.xlsx'." fa eccezione.
Tutte le idee che sto facendo male?
Soluzione
Se non mi sbaglio, Server.MapPath(ResolveUrl("~/relative/path/to/file"))
non è ciò che si desidera. Si produrrà un /rooted/path/to/file
che, quando passò ai Server.MapPath()
non produrrà un percorso valido.
Invece semplicemente utilizzare Server.MapPath("~/relative/path/to/file");
Aggiorna
Il problema riscontrato è dovuto al fatto che si includono il nome virtuale di directory ( "portale") nel vostro URL relativo. L'URL relativo non ha bisogno di specificare il nome della directory virtuale, solo il percorso del file relativo desiderato alla radice dell'applicazione.