Может ли переносимые области 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 с фактическим путем в файловой системе?