为什么在我的ASP MVC4应用程序中重定向资源捆绑?

时间:2012-06-27 21:19:23

标签: asp.net-mvc asp.net-mvc-4 resourcebundle asp.net-optimization

我正在使用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>

当页面加载其看起来很体面的网址时:

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

但该网址重定向到:

/Content/css/

返回404未找到错误...

bundle redirection...

有人有任何想法吗?

2 个答案:

答案 0 :(得分:6)

〜/ Scripts和〜/ Content / css虚拟路径已经存在于磁盘上,所以你需要让它们成为一些虚拟网址,让我们说〜/ 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

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

答案 1 :(得分:4)

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