web-dev-qa-db-ja.com

mvc:favicon.icoもコントローラーを探しますか?

エラーが発生します:

「パス '/favicon.ico'のコントローラーが見つからないか、IControllerを実装していません」

それから、スクリプト、CSS、その他のファイルにも同じことが当てはまるので、フレームワークはどのファイルについてコントローラーをインスタンス化する必要があるかをどのように知るのでしょうか?

(そのことを考えたことはありませんが、今ではファビコンが不平を言っています、私は疑問に思っていました....)

しかし、エラーに戻って、なぜそれが起こるのですか?

64
Michel

これをあなたに追加してくださいglobal.asax

routes.IgnoreRoute("favicon.ico");
106
Steve

制約付きの無視ルートを指定することもできます

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

一番上の答えは正しいです。

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

しかし、MVCの新しいバージョンの場合、これをRouteConfig.csRegisterRoutesメソッドの先頭に追加する必要があります(したがって、routes.MapRoute(..)が呼び出される前のどこかに)。

14
Yodacheese

これはおそらくVS Webサーバーで取得しています。正しい?

IIS IIS(デフォルトでは)画像(.ico、.jpg、.gifなど)のリクエストを処理するため、したがって、彼らはあなたのアプリに到達しません。

3
Hector Correa

興味深いことに、このエラーが発生したのは、tools->options->debugging、チェックを外すとすぐに、このエラーは発生しなくなります。

ただし、エラーは依然として舞台裏でスローされているように見えますが、すぐに内部でキャッチされるため、global.asaxでコーディングして、他の回答が示唆するようにそれを無視することです。

0
yoel halb