Servir favicon.ico dans ASP.NET MVC

Quelle est la recommandation finale / meilleure pour savoir comment servir favicon.ico dans ASP.NET MVC?

Je fais actuellement les choses suivantes:

  • Ajouter une entrée au tout début de ma méthode RegisterRoutes:

    routes.IgnoreRoute("favicon.ico"); 
  • Placer favicon.ico dans la racine de mon application (qui sera également la racine de mon domaine).

J’ai deux questions:

  • N’y a-t-il aucun moyen de placer le favicon.ico ailleurs que dans la racine de mon application. Il est plutôt difficile d’être au même niveau que le Content et les Controllers .
  • Est-ce IgnoreRoute("favicon.ico") cette IgnoreRoute("favicon.ico") est suffisante – ou devrais-je aussi faire ce qui suit comme indiqué dans un article de Phil Haack . Je ne suis pas au courant d’avoir jamais vu une demande à favicon.ico dans un répertoire autre que la racine – ce qui rendrait cela inutile (mais il est bon de savoir comment le faire).

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

Placer favicon.ico à la racine de votre domaine n’affecte vraiment que IE5, IIRC. Pour les navigateurs plus modernes, vous devriez pouvoir inclure une balise de lien vers un autre répertoire:

  

Vous pouvez également utiliser des fichiers non-ico pour les navigateurs autres qu’IE, pour lesquels je pourrais utiliser l’instruction conditionnelle suivante pour diffuser un fichier PNG vers FF, etc., et un ICO vers IE:

   

Je suis d’accord avec la réponse de Chris, mais vu qu’il s’agit d’une question spécifique à ASP.NET MVC, il serait préférable d’utiliser l’une ou l’autre syntaxe de Razor:

  

Ou traditionnellement

 "/> 

plutôt que

  

1) Vous pouvez mettre votre favicon où vous voulez et append cette balise à votre tête de page

  

bien que certains navigateurs essaient d’obtenir le favicon de /favicon.ico par défaut, vous devez donc utiliser IgnoreRoute.

2) Si un navigateur fait une demande pour le favicon dans un autre répertoire, il obtiendra une erreur 404, ce qui est bien et si vous avez la balise de lien dans la réponse 1 dans votre page maître, le navigateur obtiendra le favicon que vous voulez.

Je pense que favicon.ico devrait être dans le dossier racine. Il appartient juste là.

Si vous voulez gérer différentes icons, mettez-le dans le contrôleur. Vous pouvez le faire. Sinon – laissez-le simplement dans le dossier racine.

Il devrait également être possible de créer un contrôleur qui renvoie le fichier ico et enregistre la route /favicon.ico pour désigner ce contrôleur.

Utilisez-le plutôt que le favicon.ico qui a tendance à rechercher le fichier icône fav

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

Utilisez le chemin demandé et combinez-le avec le fichier icône fav afin d’obtenir l’adresse exacte recherchée

En utilisant cela résolu l’erreur de Fav.icon qui est toujours soulevée sur Application_Error

Rien de ce qui précède n’a fonctionné pour moi. J’ai finalement résolu ce problème en renommant favicon.ico en myicon.ico et en le référençant dans la tête