Asp.Net MVC Bundle Minification не работает в выпуске

Я получаю сообщение об ошибке MapRequestHandler при запросе минифицированного актива в выпуске. Кто должен обрабатывать этот запрос в выпуске? Отладочный рендеринг работает нормально и доставляет нужные файлы.

моя карта комплектации:

Key: "~/Plugins/Pingo.Demo.BootstrapPrimary.1.0.0.3/Content/css"
item(s): "~/Plugins/Pingo.Demo.BootstrapPrimary.1.0.0.3/Content/bootstrap.css"
     ,"~/Plugins/Pingo.Demo.BootstrapPrimary.1.0.0.3/Content/site.css"

Вынесена отладка:

<link href="/Plugins/Pingo.Demo.BootstrapPrimary.1.0.0.3/Content/bootstrap.css" rel="stylesheet"/>
<link href="/Plugins/Pingo.Demo.BootstrapPrimary.1.0.0.3/Content/site.css" rel="stylesheet"/>

Отрендеренный релиз:

<link href="/plugins/Pingo.Demo.BootstrapPrimary.1.0.0.3/Content/css?v=DPgH9yYiO33UIbEOm8f4duzFsUqfKWua2il4TOVUrtQ1" rel="stylesheet"/>

Версия выпуска приводит к MapRequestHandler 404, где ASP.Net считает, что это staticFile.

Есть идеи? Спасибо


person Herb Stahl    schedule 09.12.2013    source источник


Ответы (1)


Спасибо .NET Reflector за декомпиляцию System.Web.Optimization.

System.Web.Optimization имеет метод PreStartInitMethod, который вызывается только в том случае, если мое основное приложение ссылается на System.Web.Optimization. В моем случае у меня был свой PreStartInitMethod. В моей версии я вызывал BuildManager.AddReferencedAssembly(assembly) для набора сборок плагинов. System.Web.Optimization была одной из таких сборок. PreStartInitMethod в System.Web.Optimization не был известен достаточно рано (через прямую ссылку), поэтому он никогда не вызывался.

Мне пришлось найти все PreStartInitMethods всех загруженных сборок, а затем вызвать эти методы из моего PreStartInitMethod().

Моментом открытия для меня было то, что было много сборок, о которых я не знал, что PreStartInitMethods, так что это действительно урок плагина 101 при работе с .NET.

person Herb Stahl    schedule 10.12.2013