Server.MapPath nicht funktioniert
-
02-10-2019 - |
Frage
Ich bin in einem virtuellen Verzeichnis mir den Zugriff auf Dateien versuchen, zum ersten Mal in IIS erstellt, aber seltsame Ergebnisse bin immer.
Betriebssystem: Windows XP Pro
IIS 5.1
Development Platform: Visual Studio 2008
Sprache: C #
Virtual Directory Name: Portal
Lokaler Pfad: C: \ digital_communications_report_portal
Standard-Website Lokaler Pfad: c: \ inetpub \ wwwroot
Ich kann die Datei herunterladen unter http: //localhost/portal/testFile.xlsx ohne Problem dar.
Ich versuche, entweder dieser
string realFilename = Server.MapPath(ResolveUrl("~/portal/testFile.xlsx"));
string realFilename = Server.MapPath(ResolveUrl("localhost/portal/testFile.xlsx"));
und erhalten „C: \ Dokumente und Einstellungen \ jjohnson \ Eigene Dateien \ Visual Studio 2008 \ WebSites \ clientsite \ localhost \ portal \ testFile.xlsx“, die mit dem virtuellen Pfad meines Projektpfad ist am Ende geschlagen und ist nicht ein gültiger Pfad. Ich versuche, nehmen die Tilde oder localhost und ich erhalten „Fehler den Pfad‚/portal/testFile.xlsx‘abzubilden.“ Ausnahme.
Alle Ideen, was ich falsch mache?
Lösung
Wenn ich mich nicht irre, ist Server.MapPath(ResolveUrl("~/relative/path/to/file"))
nicht das, was Sie wollen. Es wird eine /rooted/path/to/file
erzeugen, die, wenn sie Server.MapPath()
weitergegeben wird keine gültige Lage ergeben.
Stattdessen verwenden Sie einfach Server.MapPath("~/relative/path/to/file");
Update
Das Problem, das Sie erleben ist aufgrund der Tatsache, dass Sie den Namen des virtuellen Verzeichnisses sind inklusive ( „Portal“) in Ihre relative URL. Ihre relative URL muss nicht mit dem Namen der virtuellen Verzeichnis angeben, nur den Pfad zu der gewünschten Datei relativ zum Stamm der Anwendung.