我如何在应用程序之后动态添加包
我有一个使用风格绑定主题的asp.net MVC4 web应用程序。 我有一个像这样的物理主题文件夹结构...
Themes
_Base
Theme1
Theme2
...
每个主题文件夹中都有任意数量的LESS文件。 在我的BundleConfig.RegisterBundles
方法中,我有一些逻辑循环遍历每个主题文件夹并为每个文件夹创建一个包。 System.Web.Optimization的捆绑机制将监视现有捆绑包中的文件和文件夹内的更改,并刷新捆绑缓存,这很好。
但是,我需要的是将新主题文件夹(即Theme3
)复制到Themes
根文件夹中的方法,并使应用程序无需先重新启动它即可识别这些文件夹。 我曾尝试创建一个引用每个文件夹中的所有文件的“虚拟”包...
var changeTracking = new StyleBundle(BUNDLE_ROOT);
changeTracking.Transforms.Clear();
changeTracking.IncludeDirectory(THEME_ROOT, "*.less", true);
changeTracking.Transforms.Add(new LessTransform());
changeTracking.Transforms.Add(new CssMinify());
bundles.Add(changeTracking);
......但这似乎没有帮助。 当我制作Theme3
,它不会触发对BundleConfig.RegisterBundles
另一个调用。 我仍然需要执行IISRESET,回收应用程序池等,以便识别新主题。
有什么办法可以在Application_Start发生后动态添加bundle?
这不是我们明确想要支持的,期望的是所有捆绑包都在应用程序启动之前注册。 否则,这将导致webfarm场景中的问题,其中一些捆绑包不存在于所有服务器上,这会导致404s。
bundle缓存的依赖关系将处理从ASP.NET缓存中清除旧的响应,但它不会触发对RegisterBundles的另一个调用,该调用将从您的global.asax调用,并且只会在您提及的应用程序回收期间调用。
链接地址: http://www.djcxy.com/p/69901.html