Server.MapPath не работает
Я пытаюсь получить доступ к файлам в виртуальном каталоге, который я впервые создал в 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 and Settings\jjohnson\ Мои документы \Visual Studio 2008\WebSites\clientsite\localhost\portal\testFile.xlsx", который представляет собой путь моего проекта с виртуальным путем, добавленным в конец, и не является допустимым путем, Я пытаюсь взять тильду или локальный хост и получаю сообщение "Не удалось сопоставить путь" /portal/testFile.xlsx ". исключение.
Есть идеи, что я делаю не так?
1 ответ
Если я не ошибаюсь, Server.MapPath(ResolveUrl("~/relative/path/to/file"))
это не то, что вы хотите. Это произведет /rooted/path/to/file
который при переходе к Server.MapPath()
не даст правильное местоположение.
Вместо этого просто используйте Server.MapPath("~/relative/path/to/file");
Обновить
Проблема, с которой вы столкнулись, связана с тем, что вы включаете имя виртуального каталога ("portal") в ваш относительный URL. Ваш относительный URL-адрес не должен указывать имя виртуального каталога, только путь к нужному файлу относительно корня приложения.