2011-01-07 3 views
59

私はエラーを取得する:mvc:favicon.icoもコントローラを探しますか?

"The controller for path '/favicon.ico' was not found or does not implement IController"

は、その後、私は考えた:どのようなフレームワークは、同じことは、スクリプト、CSSおよびその他のファイルについても同様であるので、それは、コントローラをインスタンス化する必要がありますどのファイルのために知っているのですか?

は(そのことを考えたことがないが、今ファビコンは私が思っていた、不平を言っている....)

しかし、戻ってエラーに、なぜそれが起こるのでしょうか?あなたはおそらく、VS Webサーバでこれを取得している

routes.IgnoreRoute("favicon.ico"); 
+2

[ASP.NET MVCでfavicon.icoを提供する]の可能な複製(http://stackoverflow.com/questions/487230/serving-favicon-ico-in-asp-net-mvc) – codingbadger

答えて

101

はあなたにGlobal.asaxのをこれを追加します。右?

IIS(デフォルトでは)がイメージ(.ico、.jpg、.gifなど)の要求を処理するため、アプリケーションには適用されないため、IISでこれを取得できません。

+4

ありがとう、それは素晴らしい。私はELMAHを使用していて、それは私にエラーを与え続けた。 favicon.icoに関するエラーがELMAHに表示されないようにするには、サイトのルートフォルダに "favicon.ico"というファイルも必ず追加してください。 – mateuscb

4

+0

私の最初の反応はyesでしたが、いいえ、iis6 + win2003にあります。 – Michel

+1

IIS 7でもfaviconとrobots.txtのignorerouteを追加する必要があります。 –

+2

IIS 7にはこの["integrated pipeline"](http://www.iis.net/learn/application-frameworks/building-and-running-aspnet-applications/how-to-take-advantage-of-the- iis-integrated-pipeline)HTTPハンドラは、サイトにアクセスするほとんどのURL、IIRCでクラックを取得します。 – cHao

19

また、それは私が私がチェックしていた場合にのみ、このエラーを得た音として

routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 
+0

単純な 'routes.IgnoreRoute(" favicon.ico ");'が十分であると思われる場合、複雑なアプローチを使用することの背後にある根拠はありますか?おそらく、一部のブラウザは自動的にfaviconを取得しようとし、面白いURLを使用しますか? – ANeves

+2

単純なアプローチは、favicon.icoが@mateuscbがコメントで指摘したようにサイトのルートに配置されている場合にのみ機能しますが、http://stackoverflow.com/questions/487230/で説明されているように、 serve-favicon-ico-in-asp-net-mvcでは、このより複雑なアプローチが必要です。 –

+1

このコードスニペットを使用している人は、 "route"は小文字でなければならないことに注意してください。 –

0

興味深い制約を無視するルートを指定することができ、私はオフにするとすぐにtools->options->debugging下のオプション「マイコードのみを有効にする」、およびそれはもはやこのエラーを取得していません。

しかし、エラーはまだシーンの裏にスローされていますが、すぐに内部的に捕捉されているように見えるので、他の回答と同様にglobal.asaxでコードを無視してください。

13

トップの回答が正しいです。

routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

しかし、MVCの新しいバージョンのあなたは(そうどこかroutes.MapRoute(..)が呼び出される前に)RouteConfig.csRegisterRoutes方法の先頭にこれを追加する必要があります。

関連する問題