Server.MapPath не работает - PullRequest
       25

Server.MapPath не работает

1 голос
/ 10 сентября 2010

Я пытаюсь получить доступ к файлам в виртуальном каталоге, который я создал в IIS впервые, но получаю странные результаты.

ОС: Windows XP Pro

IIS: 5.1

Платформа разработки: Visual Studio 2008

Язык: C #

Имя виртуального каталога: portal

Локальный путь: 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 Ответ

1 голос
/ 10 сентября 2010

Если я не ошибаюсь, Server.MapPath(ResolveUrl("~/relative/path/to/file")) не то, что вы хотите. Он выдаст /rooted/path/to/file, который при передаче на Server.MapPath() не даст правильное местоположение.

Вместо этого просто используйте Server.MapPath("~/relative/path/to/file");

Обновление

Проблема, с которой вы столкнулись, связана с тем, что вы включили имя виртуального каталога («portal») в свой относительный URL. Ваш относительный URL-адрес не обязательно должен указывать имя виртуального каталога, только путь к нужному файлу относительно корня приложения.

...