CSS文件在服务器上无法显示 - ASP.NET MVC捆绑错误。403 - Forbidden:访问被拒绝。

22

我的MVC 4应用程序在本地计算机上运行良好。

但是,在我发布后CSS文件不起作用(不影响网站的布局)。

我可以看到CSS文件在服务器上。

当我查看源代码时,我可以看到

<link href="/Content/css?v=fxCdHAOgPDvcROxkMfEwGQggO9uCfzckN3PaN8BOIzI1" rel="stylesheet"/>

然而在我的本地计算机上,源代码显示为:

<link href="/Content/css/myFile.css" rel="stylesheet"/>
<link href="/Content/css/myFile02.css" rel="stylesheet"/>
所以,在服务器上的源代码视图中,我点击了 Content/css?v=fxCdHAOgPDvcROxkMfEwGQggO9uCfzckN3PaN8BOIzI1,浏览器却显示“403 - Forbidden: Access is denied.”。
我正在使用BunldeConfig.cs类添加CSS文件。
    public class BundleConfig
    {
        // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/javascript").Include(
                        "~/Scripts/1.9.1.js",
                        "~/Scripts/jTools.js",
                        "~/Scripts/script.js"
                        ));

            bundles.Add(new StyleBundle("~/Content/css").Include(
                "~/Content/Css/website.css", 
                "~/Content/Css/banner.css", 
                "~/Content/Css/reusable.css",
                "~/Content/Css/lists.css",
                "~/Content/Css/tooltip.css",
                "~/Content/Css/overlay.css"
                ));


        }
    }

假设这不是服务器的IT问题(直到最近一直正常工作),那么我的代码是否存在问题?


1
可能是ASP.NET MVC框架4.5 CSS捆绑在托管上无法工作的重复问题。 - Michael Freidgeim
3个回答

42

您的问题在于在 new StyleBundle("~/Content/css") 中将 ~/Content/css 用作捆绑别名,而该路径实际上存在

因此,当您请求 <link href="/Content/css?...> 时,您实际上是在请求目录列表,这是被禁止的。

尝试使用其他内容,例如 new StyleBundle("~/Content/styles")

注意:如果您使用像 ~/Content/styles 这样的别名,则可能会在您的 .css 文件中有相对 URL 的问题。这似乎很奇怪,但您最好使用类似 ~/Content/Css/someAlias 的内容。


1
叹气 - 我其实两年前就知道这个...当你不再使用某些东西时,你会忘记一些奇怪的事情。谢谢,问题已完美解决。 - MyDaftQuestions
1
不用谢。给你一个小建议,以备将来参考。如果你把标题改成类似于“ASP.NET MVC捆绑错误。403 - 禁止访问:拒绝访问。”这样的内容,会更有助于其他人。 - lalibi
我遇到了同样的问题。我将bundle重命名为<styleBundle path="~/Content/styles"> 然后将我的主页面设置为 <webopt:BundleReference runat="server" Path="~/Content/styles" /> 一切都好了。 - Atta H.
/Content/css重命名为/Content/someothername对我有用。谢谢。 - Anup Shetty

1
如果您在“Content”文件夹中实际上有任何物理文件夹“css”,则会出现此问题。要解决此问题,请删除物理“css”文件夹或将其重命名为其他名称。

1
在你的根Web.config文件的<system.web>部分中,未包含调试模式。当您发布应用程序时,它不包括调试属性。因此,您需要在Web.config文件中包含以下代码:<compilation debug="true" targetFramework="4.5">而不是<compilation targetFramework="4.5">
如需更多信息,请参阅此链接

1
这解决了症状,但并未修复原因。正确答案请参考@lalibi的回答。 - Rosdi Kasim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接