Может ли переносимые области ASP.NET MVC правильно разрешить Server.MapPath?

У меня есть приложение ASP.NET MVC 3, которое использует PortableAreas (не спрашивайте меня почему - я не знаю). Мне нужно сопоставить URL-адрес области с фактической папкой в ​​системе.

Вот моя фактическая структура папок:

C: \ проект
| -Web.app \
| - | -Areas \
| -Web.locations.area \
| - | -поперечник \
| - | - | -scripts \
| - | Вид \

В настройке IIS веб-приложение сопоставлено с C: / project. В проекте есть каталог под названием "Области". В этой папке есть виртуальный каталог в IIS, называемый "местоположения", который указывает на C: \ project \ web.locations.area \

В представлении в области, используя синтаксис Razor, я пытаюсь создать Server.MapPath, и каждый раз происходит сбой:

@Server.MapPath("~/locations/scripts/my.script.js")

Это всегда разрешается в "C: \ project \ web.app \ location \ scripts \ my.script.js", что неверно. Файл фактически находится в "C: \ project \ web.locations.area \ content \ scripts \ my.script.js".

Когда я звоню @Url.Content("~/locations/scripts/my.script.js") он разрешается на правильный URL, как я ожидаю. Этот URL действительно существует, когда я нажимаю на него через браузер, и файл сценария корректно подается из IIS / моего веб-приложения asp.net.

Почему вызов Server.MapPath дает неверные результаты? Как сопоставить путь в PortableArea с фактическим путем в файловой системе?

0 ответов

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