Может ли ASP.NET MVC переносимые области правильно разрешить Server.MapPath - PullRequest
0 голосов
/ 07 февраля 2012

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

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

C:\project
|-web.app\
|-|-Areas\
|-web.locations.area\
|-|-content\
|-|-|-scripts\
|-|-views\

В настройке IIS веб-приложение сопоставлено с C:/ проект.В проекте есть каталог под названием «Области».В этой папке есть виртуальный каталог в 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 с фактическим путем в файловой системе?

...