[Asp.net-Mvc] ASP.NET MVC框架4.5 CSS捆绑不起作用的托管


Answers

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

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

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

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

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

对Ray Moro大喊大叫,他想出了实际的原因,并在我的博客上与我分享: http://blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html : http://blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html

Question

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

一捆css文件不起作用。 在我的本地计算机的调试模式下,我看到了应用程序的代码,并且看到了这些文件。 该应用程序按预期工作。

<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 - 禁止:访问被拒绝。

如何解决这个问题?




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




问题也可能来自文件被加密。 当我下载BootStrap并使用提供的文件时,发生了这种情况。 他们在Windows资源管理器中显示绿色,并且在Visual Studio中运行良好,但部署时出现403错误。

您可以通过转到属性来查看它们是否加密,然后是高级属性,并且存在已加密的复选框。

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




我做的很简单,

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

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

这应该做到这一点。




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

public static void RegisterBundles(BundleCollection bundles)
{
   ...

   BundleTable.EnableOptimizations = true;     // Added this           
}





Links