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-адрес не должен указывать имя виртуального каталога, только путь к нужному файлу относительно корня приложения.

Другие вопросы по тегам