7

我正在使用 RC,并通过 NuGet 检查了所有内容是否都是最新的。在我的 global.asax.cs 中,我得到了:

BundleTable.Bundles.AddDefaultFileExtensionReplacements();
BundleTable.Bundles.AddDefaultIgnorePatterns();
BundleTable.Bundles.AddDefaultFileOrderings();

Bundle scripts = new Bundle("~/Scripts");
scripts.IncludeDirectory("~/Scripts", "*.js");
BundleTable.Bundles.Add(scripts);

Bundle css = new Bundle("~/Content/css");
css.IncludeDirectory("~/Content/css", "*.css", false);
BundleTable.Bundles.Add(css);

我已经尝试了一些不同的配置,但没有任何改进。

然后在我的布局中我得到了:

<link href="@BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
<script src="@BundleTable.Bundles.ResolveBundleUrl("~/Scripts")"> </script>

当页面加载时,它的 url 看起来不错:

<link href="/Content/css?v=QAsFYXHCbnaU70oGVxpgi9py9iKQrT9C4BVNdHa7xoI1" rel="stylesheet" type="text/css" />

但该网址重定向到:

/Content/css/

这会返回 404 not found 错误...

捆绑重定向...

有人有什么想法吗?

4

2 回答 2

6

~/Scripts 和 ~/Content/css 虚拟路径已经存在于磁盘上,所以你需要让它们成为一些虚拟 url,比如说 ~/Scripts/js 和 ~/Content/styles 就是这样,现在很好。

Bundle scripts = new Bundle("~/Scripts/js");
scripts.IncludeDirectory("~/Scripts", "*.js");
BundleTable.Bundles.Add(scripts);

Bundle css = new Bundle("~/Content/styles");
css.IncludeDirectory("~/Content/css", "*.css", false);
BundleTable.Bundles.Add(css);

同样在 MVC4 中,路由、捆绑和过滤器配置已移至

~/App_Start/(RouteConfig, BundleConfig, FilterConfig).cs

所以检查你有那些,如果有,那么在那里写你的配置。

于 2012-06-27T22:28:21.847 回答
4

决定是否处理请求的捆绑模块逻辑不会接管对现有文件或目录的请求。这就是为什么当您的捆绑请求与现有目录(或文件)位于相同的虚拟路径时不起作用的原因。

于 2012-06-29T23:14:12.207 回答