ASP.NET MVC框架4.5 CSS捆绑不起作用的托pipe

我在用MVC4编写的app海港上运行一个应用程序。

一捆的CSS文件不起作用。 在debugging模式下我的本地计算机,我看到的应用程序的代码,我看到的文件。 该应用程序按预期工作。

<link href="/Content/css/home/basic-jquery-slider.css" rel="stylesheet"/> <link href="/Content/css/home/Home.css" rel="stylesheet"/> 

当我将应用程序上传到Appharbor时,我在代码中看到了该包,但该应用程序不起作用。

 <link href="/Content/css/home?v=zhVOIpUNuvCOZhJyBcQWpMlozayor4te6k-pM29wHqI1" rel="stylesheet"/> 

当我浏览href中的链接时,我得到403 – 禁止:访问被拒绝。

如何解决这个问题?

我的猜测是Content/css存在于你的应用程序的磁盘上。 在这种情况下,IIS将处理请求,而不是MVC。

确保包的虚拟path(StyleBundle构造函数的参数)与文件系统中的文件夹不匹配。

来自评论:

“创build捆绑包时要遵循的一个好的约定是在捆绑包名称中包含”捆绑“作为前缀,这将防止可能的路由冲突。

这个问题默认情况下,.NET不会“处理”扩展名为.js或.css的请求。

有两个修复这个(你只需要做一个)

A)从软件包名称中删除扩展名。 (推荐)这将导致.NET处理请求并通过BundleModule运行。

B)将这个添加到你的web.config中的system.webServer部分,这将导致.NET通过BundleModule运行.js和.css请求。

 <modules runAllManagedModulesForAllRequests="true"> <remove name="BundleModule" /> <add name="BundleModule" type="System.Web.Optimization.BundleModule" /> </modules> 

大喊大叫雷莫罗谁找出了真正的原因,并在我的博客与我分享: http : //blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html

当我尝试在AppHarbor上部署我的ASP.NET MVC应用程序时,也发生了这种情况。

我有一个名称的样式表包

 @Styles.Render("~/Content/bootstrap") 

和文件夹结构是

– 内容

– Content \ Bootstrap \ …

只要将软件包名称改为"~/Content/bootstrap-css"我的问题就得到了解决。

403错误解决了。 这里是403错误的详细解释和解决scheme。
该解决scheme演示了CSS捆绑。 但是它也适用于JavaScript。

http://www.mvccentral.net/Story/Details/articles/kahanu/stylebundle-403-error-solved

简而言之,请确保虚拟path[Script | Style]Bundle("~/content/[script | css]") [Script | Style]Bundle("~/content/[script | css]")与文件系统中的文件夹(例如C:\approot\Content\[script | css] )不匹配[Script | Style]Bundle("~/content/[scriptDiff | cssDiff]") [Script | Style]Bundle("~/content/[scriptDiff | cssDiff]")

我知道我对这个问题迟了4年,但是这对我有效。

 public static void RegisterBundles(BundleCollection bundles) { ... BundleTable.EnableOptimizations = true; // Added this } 

我所做的很简单,

我在ScriptBundle的末尾添加了“js”,如下所示:new ScriptBundle(“〜/ bundles / appjs”)我在StyleBundle的末尾添加“css”,如下所示:new StyleBundle(“〜/ content / appcss”)

我的文件夹名称永远不会以“js”或“css”结尾。

这应该做到这一点。

这也适用于'ScriptBundle类',确保构造函数的'参数名称'不匹配Web应用程序文件系统中的path。 请记住,IIS将尝试提供文件/请求。

问题也可能来自文件被encryption。 当我下载BootStrap并使用提供的文件时,发生了这种情况。 他们在Windows资源pipe理器中显示绿色,并在Visual Studio中正常工作,但部署时,我得到了一个403错误。

你可以看到他们是否encryption属性,然后高级属性,并有一个encyptedcheckbox。

取消选中,这将不再是一个问题。

我有同样的问题(403禁止)的错误。 在我的情况下,原因是我的组织中的代理服务器阻止我的CSS文件。 Css文件名称与块规则之一匹配。

我发现文件bootstrap.css不在内容文件夹中,所以我在包中查找它并粘贴在那里..它的工作!