Server.mappath не работает
-
02-10-2019 - |
Вопрос
Я пытаюсь получить доступ к файлам в виртуальном каталоге, который я впервые создал в IIS, но получаю странные результаты.
ОС: Windows XP Pro
IIS: 5.1
Платформа развития: Visual Studio 2008
Язык: C #
Имя виртуального каталога: портал
Локальный путь: C: Digital_communications_report_portal
Локальный путь веб-сайта по умолчанию: C: inetpub wwwroot
Я могу скачать файл в http: //localhost/portal/testfile.xlsx. без каких-либо проблем.
Я пытаюсь любой из этих
string realFilename = Server.MapPath(ResolveUrl("~/portal/testFile.xlsx"));
string realFilename = Server.MapPath(ResolveUrl("localhost/portal/testFile.xlsx"));
И получить «C: Documents и Settings Jjohnson My Documents Visual Studio 2008 Websies ClientSite localhost Portal testfile.xlsx», который является моим путь проекта с виртуальным путем, удаленным в конце и не является действительным путем Отказ Я пытаюсь взять тильду или localhost, и я получаю «Не удалось сопоставить путь '/portal/testfile.xlsx». исключение.
Есть идеи, что я делаю не так?
Решение
Если я не ошибаюсь, Server.MapPath(ResolveUrl("~/relative/path/to/file"))
не то, что вы хотите. Это будет производить /rooted/path/to/file
который когда передается Server.MapPath()
не даст действительное местоположение.
Вместо этого просто использовать Server.MapPath("~/relative/path/to/file");
Обновлять
Проблема, которую вы испытываете, связаны с тем, что вы включаете имя виртуального каталога («Portal») в вашем относительном URL. Ваш относительный URL не должен указывать имя виртуального каталога, просто путь к нужным файлам относительно корня приложения.