捆绑的css链接收到404错误

我正在尝试捆绑在ASP.NET MVC 4中工作。我从为捆绑的CSS生成的链接中收到404错误。 我做了以下事情:

  1. 通过NuGet安装“Microsoft ASP.NET Web Optimization Framework”软件包(v4.0.20710.0)

  2. 在App_Start目录中创建了一个BundleConfig类,其中包含以下内容:

    using System.Web.Optimization; namespace BsdAppTemplate.Web_Nancy.App_Start { public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new StyleBundle("~/bundles/styles/cvi").Include( "~/mainstyles.css" )); } } } 
  3. 在站点根目录的Web.config中添加了以下内容:

          ...    
  4. 将以下内容添加到我的MVC布局文件的head元素中:

      @Styles.Render("~/bundles/styles/cvi") 
  5. 将BundleConfig(“mainstyles.css”)中引用的CSS文件复制到我的Web项目的根目录中。

当我查看渲染文件的来源时,我可以看到链接显示为:

  

此链接在浏览时会生成404,或在Chrome的网络标签中查看页面请求。

我也在Web表单上尝试过等效,但是从添加时生成的链接中得到了相同的结果(404):

  

您似乎错过了通过在Application_Start调用RegisterBundlesApplication_Start配置的步骤:

 protected void Application_Start() { ... BundleConfig.RegisterBundles(BundleTable.Bundles); ... } 

通常在BundleConfig类已经存在的情况下(作为项目模板的一部分或在安装期间由NuGet包创建),此调用也已存在 – 这就是许多教程隐含的原因。

您还应该知道BundleConfig类用于分离关注点以及保持Application_Start清洁。 在简单的情况下,没有什么可以阻止您直接在Application_Start注册bundle:

 protected void Application_Start() { ... BundleTable.Bundles.Add(new StyleBundle("~/bundles/styles/cvi").Include("~/mainstyles.css")); ... } 

通过谷歌搜索结果发现了这个问题,但我的案例中的问题是Windows 2008在编译debug = false时需要在web.config中使用它。

      

没有这个,它在Win7开发机上运行良好。

我有同样的问题,我的脚本包突然响应404.我的解决方案类似于我在这篇博文上找到的@fiat回答。

解决方案是在system.webServer部分的modules部分中删除并添加BundleModule

     

我有同样的问题(在ASP.Net webform中),我在Global.asax中使用Ignore“bundles /”路由解决了我的问题:

 routeCollection.Ignore("bundles/{*catch}");