我正在使用ASP.NET MVC 3
。我还在使用Autofac
和MVC Extensions
。我最初得到的错误是:
The controller for path '/favicon.ico' was not found or does not implement IController.
我读了几篇帖子,他们都建议我加入以下内容:
Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
然后我开始收到以下错误:
File does not exist.
ExceptionType:HttpException Stacktrace:
at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context, String overrideVirtualPath)
at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
错误并没有告诉我多少,因为我不知道它试图打开什么文件?我该如何解决这个问题?我没有使用图标,我不想要一个。我正在使用Internet Explorer 8
。
答案 0 :(得分:2)
大多数现代浏览器都盲目地提出了对favicon.ico的请求,如果没有favicon(这是正确的行为),他们期望 404(找不到文件)。您可以在下面找到关于Link type "icon"的HTML5工作草案的引用 :
在没有带有icon关键字的链接的情况下,获取的文档 通过HTTP或HTTPS,用户代理可能会尝试获取和使用 带有通过解析URL获得的绝对URL的图标 /favicon.ico反对文档的地址,就像页面一样 使用icon关键字声明该图标。
您看到异常的原因是配置为使用托管/集成管道模式的Web开发服务器或IIS通过 Global.asax 放置所有请求(包括错误) )。
您可以尝试通过创建以下关于favicon的虚拟链接来阻止浏览器发出请求:
<html>
<head>
<link rel="shortcut icon" href="#" />
...
</head>
...
</html>
您还可以为自己创建一个空文件,或者通过选中<{em> 404 的HttpException.GetHttpCode()
和 /favicon.ico的((System.Web.HttpApplication)Sender).Context.Request.Url
来过滤错误EM>
答案 1 :(得分:0)
如果您不想在您的网站中使用favicon
,但仍希望摆脱此错误,则可以创建一个大小为0字节的文件,并将其命名为favicon.ico
。
答案 2 :(得分:0)
尝试的替代规则简单明了:
// add ignore route for favicon.ico
routes.IgnoreRoute("favicon.ico");