【发布时间】:2011-06-05 04:22:57
【问题描述】:
我收到一个错误:
“路径 '/favicon.ico' 的控制器未找到或未实现 IController”
然后我想:框架如何知道它必须为哪些文件实例化一个控制器,因为对于脚本、css和其他文件也是如此?
(从来没想过,但现在网站图标在抱怨,我想知道....)
但回到错误,为什么会出现这种情况?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-2
我收到一个错误:
“路径 '/favicon.ico' 的控制器未找到或未实现 IController”
然后我想:框架如何知道它必须为哪些文件实例化一个控制器,因为对于脚本、css和其他文件也是如此?
(从来没想过,但现在网站图标在抱怨,我想知道....)
但回到错误,为什么会出现这种情况?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-2
最佳答案是正确的。
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
但是对于较新版本的 MVC,您必须在 RouteConfig.cs 中的 RegisterRoutes 方法的顶部添加它(所以在 routes.MapRoute(..) 之前的某处是调用)。
【讨论】:
听起来很有趣,我只有在选中 tools->options->debugging 下的“仅启用我的代码”选项时才会收到此错误,并且一旦我取消选中它,我就不再收到此错误。
但请注意,错误似乎仍在幕后引发,但在内部立即被捕获,因此最好的解决方案是在 global.asax 中编写代码以按照其他答案的建议忽略它。
【讨论】:
你也可以指定带有约束的忽略路由
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
【讨论】:
routes.IgnoreRoute("favicon.ico"); 似乎就足够了时,使用复杂方法有什么理由吗?也许某些浏览器会尝试自动获取网站图标,并使用有趣的 URL?
将此添加给您global.asax:
routes.IgnoreRoute("favicon.ico");
【讨论】:
您可能是通过 VS Web 服务器获得的。对吧?
由于 IIS(默认情况下)处理图像请求(.ico、.jpg、.gif 等),因此您不会通过 IIS 获得此功能,因此它们不会进入您的应用程序。
【讨论】: