有没有办法在捆绑名称中包含文件扩展名?

时间:2012-10-17 09:43:12

标签: asp.net-mvc asp.net-mvc-4 asp.net-optimization bundling-and-minification

我想定义一个这样的包:

bundles.Add(
    new StyleBundle("~/style.css").Include(
        //...
));

如果捆绑包名称只是"~/style",则可以使用,但是文件扩展名总是返回404.我怀疑服务器在驱动器上搜索CSS和JS文件并忽略捆绑系统,但我可以找不到其他人试图在包名中包含文件扩展名。这可能没有像URL重写这样的东西吗?

1 个答案:

答案 0 :(得分:24)

您可以将以下内容添加到web.config中的<system.webServer>部分:

<modules runAllManagedModulesForAllRequests="true" />

这将确保对.js.css等静态资源的请求将通过托管模块并被ASP.NET MVC截获。

作为为所有请求启用runAllManagedModulesForAllRequests的替代方法,您只能为需要使用的网址配置它们。因此,在<handlers>内添加以下内容:

<handlers>
    <!-- ... -->
    <add name="scriptBundle" verb="*" path="script.js" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" />
    <add name="cssBundle" verb="*" path="style.css" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" />
</handlers>