MVC2 - 内容和脚本文件夹返回404

时间:2010-11-02 16:05:32

标签: visual-studio-2010 asp.net-mvc-2 http-status-code-404

我不知道我做了什么,但突然我的脚本和内容文件夹为所有项目返回404。

我想也许是文件夹权限,因为我将项目放在“我的文档”下的文件夹中。我以管理员身份运行VS,但我仍然遇到问题。

我在调试模式下运行,没有弹出错误。

我的母版页没有任何变化。我试着一点一点把它拉开,没有运气。

当我导航到任何images / css / scripts时,我收到404错误。为了证明我没有疯狂,这是我的路线。

#region Error Friendly Names
                routes.MapRoute(
                       "AccessDenied",                                              // Route name
                       "Error/AccessDenied",                           // URL with parameters
                       new { controller = "Error", action = "Index", code = "403" } // Parameter defaults
                   );
                routes.MapRoute(
                       "NotFound",                                              // Route name
                       "Error/NotFound",                           // URL with parameters
                       new { controller = "Error", action = "Index", code = "404" } // Parameter defaults
                   );
                routes.MapRoute(
                       "ServerError",                                              // Route name
                       "Error/ServerError",                           // URL with parameters
                       new { controller = "Error", action = "Index", code = "500" } // Parameter defaults
                   );
                #endregion

                #region Redirection
                routes.MapRoute(
                "Redirection", // Route name
                "Redirect/{id}", // URL with parameters
                new { controller = "Redirect", action = "Index", id = UrlParameter.Optional } // Parameter defaults
                );
                #endregion

                routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
                );

                //handle all unknown routes with a 404
                routes.MapRoute(
                    "TheOneRouteToRuleThemAll",                                     // Route name
                    "{*path}",                                                      // URL with parameters
                    new { controller = "Error", action = "Index", id = UrlParameter.Optional, code = "404" } // Parameter defaults
                );

在你的最后一条路线上犯规之前,那之前就已经很好了。我也删除它作为测试,看看是不是它,它不是罪魁祸首。

就好像内容和脚本的MVC内部处理已停止工作。

这是我的主管部分

<head><title>My Site</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="robots" content="index, follow" /><meta name="keywords" /><meta name="title" /><meta name="description" /><link href="/Content/style.css" rel="stylesheet" type="text/css" /><link href="/Content/Themes/Green/Green.css" rel="stylesheet" type="text/css" /><link href="/Content/prettyPhoto.css" rel="stylesheet" type="text/css" />


    <!--[if IE 7]>

    <style>ul#servicesbox li {height: 1%;width: 70px;}</style>

  <![endif]-->

  <!--[if IE 6 ]>

    <link href="/Content/ie.css" rel="stylesheet" type="text/css" />

  <![endif]-->

<script src="/Scripts/jquery.js" type="text/javascript" /><script src="/Scripts/ddsmoothmenu.js" type="text/javascript" /><script src="/Scripts/cufon-yui.js" type="text/javascript" /><script src="/Scripts/Fonts/fontin.js" type="text/javascript" /><script src="/Scripts/functions.js" type="text/javascript" /><script src="/Scripts/jcarousellite_1.0.1c4.js" type="text/javascript" /><script src="/Scripts/jquery.prettyPhoto.js" type="text/javascript" />

    <!-- PNG transparency fix for IE 6 -->

    <!--[if IE 6]>

    <script src="/Scripts/pngfix.js" type="text/javascript" />

    <script>DD_belatedPNG.fix('#logo img,#slider,#piecemaker_slider,#contentbar,#testibox,#servicesbox li img,.nivo-controlNav a,.nivo-directionNav a,#social-links a img');</script>

    <![endif]-->

    <script type="text/javascript">

        $(function () {

            $(".newsticker-jcarousellite").jCarouselLite({

                btnPrev: null,

                btnNext: null,

                btnGo: null,

                mouseWheel: false,

                easing: null,

                vertical: true,

                hoverPause: true,

                circular: true,

                visible: 1,

                start: 0,

                scroll: 1,

                auto: 4000,

                speed: 1000,

                beforeStart: null,

                afterEnd: null

            });

        });

</script>

</head>

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我开始拉出web.config的块,我找到了这个部分:

<httpHandlers>
          <add verb="*" path="*" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </httpHandlers>

当我删除它时,它又开始工作了。当我尝试在IIS6中运行应用程序时,我认为它已被粘贴。

答案 1 :(得分:1)

或许与此有关:?

  //handle all unknown routes with a 404
            routes.MapRoute(
                "TheOneRouteToRuleThemAll",                                     // Route name
                "{*path}",                                                      // URL with parameters
                new { controller = "Error", action = "Index", id = UrlParameter.Optional, code = "404" } // Parameter defaults
            );

对此进行评论并进行测试。

编辑: 我的错。 OP表示他已经尝试评论TheOneRouteToRuleThemAll。

您是否尝试过为静态文件设置一些忽略?

routes.IgnoreRoute("{file}.js");
routes.IgnoreRoute("{file}.html");

看起来以下路线可能会映射到您的静态位置

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } //   Parameter defaults
            );