Вложенное приложение игнорирует пакеты
Я пытаюсь запустить приложение ASP.NET MVC 5.2.3.0 как вложенное приложение, чтобы я мог получить к нему доступ в виде подпапки, например, http://example.com/my-application. Я добавил его в существующее приложение, выбрав "Добавить приложение" для выбранного отдельного пула приложений. Когда я запускаю my-application по собственному URL, оно работает нормально, однако, когда я пытаюсь запустить его как http://example.com/my-application оно отказывается отображать пакеты, ни style, ни js. Что я уже пробовал:
- Я попытался включить и отключить пакетирование и минификацию. Когда он отключен, Styles.Render ничего не добавляет в разметку. Например, при включении в разметку добавляется недействительная ссылка на комплект
<link href="/calc/bundles/styles/mainlayout?v=" rel="stylesheet"/>
и ссылка возвращает пустой документ. - Я попытался поместить мое приложение на пустой сайт, чтобы избежать наследственных побочных эффектов. Здесь нет разницы.
- Я пытался поставить совершенно новое приложение рядом с my-application, и комплектация работала там нормально, так что, должно быть, что-то не так с моим приложением, и я не могу найти что именно.
- Я пытался использовать код ILSpy System.Web.Optimization, но не смог найти там никакой помощи.
- Я не смог отладить System.Web.Optimization, так как моя VS только что зависла.
- Я не нашел никаких конфликтующих маршрутов с адресом моего приложения.
Если кто-то сталкивался с той же проблемой, то любой совет приветствуется. Благодарю.
ОБНОВЛЕНИЕ: я нашел, что вызывает проблему. Мы интенсивно используем T4MVC и используем его также для конфигурации пакетов. Таким образом, наше объявление пакета выглядит примерно так:
bundles.Add(new ScriptBundle("~/bundles/scripts")
.Include("~" + Links.Scripts.Script1_js, "~" + Links.Scripts.Script2_js));
А также "~" + Links.Scripts.Script1_js
для вложенного приложения дает мне ~/my-application/scripts/script1.js
в то время как VirtualPathProvider
изнутри Include
метод ожидает, что это будет ~/scripts/script1.js
,
Таким образом, вопрос трансформируется в: кто-нибудь знает, как запретить T4MVC добавлять вложенные пути к приложениям в ссылки на статические файлы, чтобы приложение не осознавало, что оно вложено? Бьюсь об заклад, Дэвид Эббо знает, как этого добиться:)