mvc:favicon.ico还能找一个控制器吗?

Mic*_*hel 65 asp.net asp.net-mvc asp.net-mvc-2

我收到一个错误:

"路径'/favicon.ico'的控制器未找到或未实现IController"

然后我想:框架如何知道它有哪些文件来实例化控制器,因为脚本,css和其他文件也是如此?

(从来没有想到这一点,但现在,favicon正在抱怨,我在想......)

但回到错误,为什么会发生这种情况?

Ste*_*eve 106

将此添加到global.asax:

routes.IgnoreRoute("favicon.ico");
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这很有效.我正在使用ELMAH并且它一直给我一个错误.为了确保ELMAH中没有关于favicon.ico的错误,请确保在站点的根文件夹中添加文件"favicon.ico". (4认同)

Nic*_*ray 19

您还可以使用约束指定忽略路由

routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
Run Code Online (Sandbox Code Playgroud)

  • 只有当@iconuscb在他的评论中指出,将favicon.ico放在网站的根目录时,这种简单的方法才有效,但是如果将其放在其他地方,如http://stackoverflow.com/questions/487230/serving中所述-favicon-ico-in-asp-net-mvc然后我们需要这种更复杂的方法. (3认同)
  • @yohal - whoops - 按照http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx修复它 (2认同)

Yod*_*ese 15

最佳答案是正确的.

routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
Run Code Online (Sandbox Code Playgroud)

但是对于较新版本的MVC,您必须在RouteConfig.cs中的RegisterRoutes方法的顶部添加它(所以在调用routes.MapRoute(..)之前的某个地方).