使用"本地IIS Web服务器"时asp.net mvc 3和静态资源404'ing

Ted*_*Ted 3 asp.net-mvc-3

情况如下:

  1. ASP.NET MVC 3应用程序使用Razor作为视图引擎.
  2. 在Visual Studio开发服务器(Cassini)下正常工作
  3. 但是,当我切换到"使用本地IIS Web服务器"时,站点运行,但每个静态资源404s(再次,在Cassini下没有问题).
  4. ASP.NET 4.0,Windows 7 Ultimate x64,IIS 7.5,集成管道,网络服务作为应用程序池标识.

具体来说,尝试访问已知存在的静态文件的异常(即删除应用程序文件,特别是带有路由信息的DLL等,并且它没有问题地提供).同样,这发生在所有静态文件中,包括/public/scripts/jquery.js:

路径错误:/favicon.ico原始URL:/favicon.ico消息:找不到路径'/favicon.ico'.来源:System.Web堆栈跟踪:位于System.Web.Http应用程序中的System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()的System.Web.HttpNotFoundHandler.ProcessRequest(HttpContext上下文)(IExecutionStep) step,Boolean&completedSynchronously)TargetSite:Void ProcessRequest(System.Web.HttpContext)NLogLogger.Fatal => NLogLogger.Fatal => LoggerImpl.Write

我很困惑.我已经验证了测试默认的ASP.NET MVC 3应用程序在此计算机上的VS Development Server和本地IIS Web服务器下运行正常.

我希望其他人遇到类似的问题.万一有帮助,这是我的路线:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("favicon.ico");

        routes.MapRoute(
            "Login", // Route name
            "login", // URL with parameters
            new { controller = "Session", action = "Create" } // Parameter defaults
        );

        routes.MapRoute(
            "Logout", // Route name
            "logout", // URL with parameters
            new { controller = "Session", action = "Delete" } // Parameter defaults
        );

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

Ted*_*Ted 5

当然,结果非常简单:在根Web.config中定义了一个HttpHandler而不仅仅是View目录的Web.config

    <handlers>
        <remove name="BlockViewHandler" />
        <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
Run Code Online (Sandbox Code Playgroud)

现在很明显,但希望通过在这里张贴它可能会节省别人在如此明显的事情上浪费时间.有关详细信息,请参阅http://haacked.com/archive/2008/06/25/aspnetmvc-block-view-access.aspx.