web-dev-qa-db-ja.com

ASP.NET MVCでfavicon.icoを提供する

ASP.NET MVCでfavicon.icoを提供するための最終/最良の推奨事項は何ですか?

私は現在次のことを行っています:

  • RegisterRoutesメソッドのvery beginにエントリを追加する:

    routes.IgnoreRoute("favicon.ico");
    
  • Favicon.icoをアプリケーションのルートに配置します(これはドメインのルートにもなります)。

2つの質問があります。

  • Favicon.icoをアプリケーションのルート以外の場所に配置する方法はありませんか。 ContentおよびControllersと同じレベルにいるのはとてもむずかしいです。
  • これはIgnoreRoute("favicon.ico")ステートメントで十分ですか-または Phil Haackのブログ投稿 で説明されているように、次のことも行う必要があります。ルート以外のディレクトリでfavicon.icoへのリクエストを見たことはありません。これにより、これは不要になります(ただし、その方法を知っておくと便利です)。

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

ドメインのルートにfavicon.icoを配置しても、IE5、IIRCにのみ影響します。最新のブラウザの場合、別のディレクトリを指すリンクタグを含めることができます。

<link rel="SHORTCUT ICON" href="http://www.mydomain.com/content/favicon.ico"/>

IE以外のブラウザで非icoファイルを使用することもできます。この場合、次の条件ステートメントを使用して、PNGをFFなどに、ICOをIEに提供します。

<link rel="icon" type="image/png" href="http://www.mydomain.com/content/favicon.png" />
<!--[if IE]>
<link rel="shortcut icon" href="http://www.mydomain.com/content/favicon.ico" type="image/vnd.Microsoft.icon" />
<![endif]-->
197
Chris

私はクリスからの答えに同意しますが、これが特定のASP.NET MVCの質問であることを確認するには、Razor構文を使用する方が良いでしょう:

<link rel="icon" href="@Url.Content("~/content/favicon.ico")"/>

または伝統的に

<link rel="icon" href="<%= Url.Content("~/content/favicon.ico") %>"/>

のではなく

<link rel="icon" href="http://www.mydomain.com/content/favicon.ico"/>
219
AlexC

1)ファビコンを好きな場所に置いて、このタグをページヘッドに追加できます。

<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />

一部のブラウザはデフォルトで/favicon.icoからファビコンを取得しようとするため、IgnoreRouteを使用する必要があります。

2)ブラウザが別のディレクトリでファビコンをリクエストすると、エラーが404エラーになり、マスターページの回答1にリンクタグがある場合、ブラウザは目的のファビコンを取得します。

20

favicon.icoはルートフォルダにあるべきだと思います。それはただそこに属します。

異なるアイコンを提供したい場合は、それをコントローラーに入れてください。出来るよ。そうでない場合-単にルートフォルダに残します。

7
dmajkic

上記のどれも私にとってはうまくいきませんでした。私はついにfavicon.icoの名前をmyicon.icoに変更してこの問題を解決し、ヘッド<link rel="icon" href="~/myicon.ico" type="image/x-icon" />でそれを参照しました

3
Tracy Zhou

また、icoファイルを返すコントローラーを作成し、そのコントローラーを指すルート/favicon.icoを登録することもできます。

2
Carles Company

Favアイコンファイルを検索する傾向があるfavicon.icoの代わりにこれを使用します

> <link rel="ICON" 
> href="@System.IO.Path.Combine(Request.PhysicalApplicationPath,
> "favicon.ico")" />

要求されたパスを使用し、favアイコンファイルと組み合わせて、検索対象の正確なアドレスを取得します

これを使用して、Application_Errorで常に発生するFav.iconエラーを解決しました

0
Tribhuvan Patel

必要なことは、startup.csにapp.UseStaticFiles();を追加するだけです-> public void Configure(IApplicationBuilder app, IHostingEnvironment env)

ASP.netコアは、静的ファイルを取得する優れた方法を提供します。それはwwwrootフォルダーを使用しています。 ASP.NET Coreの静的ファイル をお読みください。

<Link />を使用することはあまり良い考えではありません。誰かがfavicon.icoの各HTMLまたはcshtmlにリンクタグを追加するのはなぜですか?

0
Ripal Barot