15

我想定义一个这样的包:

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

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

4

1 回答 1

24

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

<modules runAllManagedModulesForAllRequests="true" />

这将确保对静态资源的请求(例如.js和).css将通过托管模块并被 ASP.NET MVC 拦截。

作为启用runAllManagedModulesForAllRequests所有请求的替代方法,您可以仅为需要使用的 url 配置它们。所以在里面<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>
于 2012-10-17T09:47:13.407 回答