情况如下:
具体来说,尝试访问已知存在的静态文件的异常(即删除应用程序文件,特别是带有路由信息的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)
当然,结果非常简单:在根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.