Servir favicon.ico in ASP.NET MVC

qu'est-Ce que le final/la meilleure recommandation pour la manière de servir favicon.ico in ASP.NET MVC?

je fais actuellement ce qui suit:

  • ajout d'une entrée à la très début de la méthode de mes registres:

    routes.IgnoreRoute("favicon.ico");
    
  • placement favicon.ico à la racine de mon application (qui est aussi la racine de mon domaine).

j'ai deux questions:

  • est-il impossible de mettre le favicon.ico ailleurs qu'à la racine de mon application. C'est assez dégueulasse d'être au même niveau que Content et Controllers .
  • est - ce que cette déclaration IgnoreRoute("favicon.ico") est suffisante-ou devrais-je également faire ce qui suit comme discuté dans un billet de blog de Phil Haack . Je ne suis pas au courant de jamais ayant vu la demande de favicon.ico dans le répertoire autre que la racine - qui rendrait inutiles (mais il est bon de savoir comment faire).

    routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
    
239
demandé sur Sameer 2009-01-28 13:55:56

7 réponses

place favicon.ico dans la racine de votre domaine affecte seulement vraiment IE5, IIRC. Pour les navigateurs plus modernes, vous devriez être en mesure d'inclure une étiquette de lien pour pointer vers un autre répertoire:

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

vous pouvez également utiliser des fichiers non-ico pour des navigateurs autres que IE, pour lesquels j'utiliserais peut-être l'instruction conditionnelle suivante pour servir un PNG à FF,etc, et un 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]-->
189
répondu Chris 2009-01-28 11:19:41

Je suis d'accord avec la réponse de Chris, ASP.NET MVC question il serait préférable d'utiliser l'une ou l'autre syntaxe de Razor:

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

ou traditionnellement

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

plutôt que

<link rel="icon" href="http://www.mydomain.com/content/favicon.ico"/>
205
répondu AlexC 2014-04-11 09:52:54

1) vous pouvez mettre votre favicon où vous voulez et ajouter cette étiquette à votre tête de page

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

bien que certains navigateurs vont essayer d'obtenir le favicon de /favicon.ico par défaut, donc vous devriez utiliser L'IgnoreRoute.

2) Si un navigateur fait une demande pour le favicon dans un autre répertoire, il obtiendra une erreur 404 qui est très bien et si vous avez l'étiquette de lien dans la réponse 1 dans votre page principale le navigateur obtiendra le favicon que vous voulez.

16
répondu Eduardo Campañó 2009-01-28 11:15:31

je pense que favicon.ico devrait être dans le dossier racine. Il vient de il appartient.

si vous voulez servir diferent icons - le mettre dans controler. Vous pouvez le faire. Si ce n'est pas juste de le laisser dans le dossier racine.

6
répondu dmajkic 2009-01-28 11:18:51

il devrait également être possible de créer un contrôleur qui retourne le fichier ico et enregistre la route /favicon.ico pour pointer vers ce contrôleur.

2
répondu Carles Company 2009-12-24 08:02:20

rien de ce qui précède n'a fonctionné pour moi. J'ai finalement résolu ce problème en renommant favicon.ico à myicon.ico, et la référence dans la tête <link rel="icon" href="~/myicon.ico" type="image/x-icon" />

1
répondu Tracy Zhou 2018-05-08 18:32:04

utilisez ceci au lieu du favicon.ico qui a tendance à rechercher le fichier d'icône

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

utilisez le chemin demandé et combinez avec le fichier d'icône fav de sorte qu'il obtient l'adresse précise que sa recherche pour

en utilisant ceci résolu le Fav.erreur d'icône qui est soulevée toujours sur Application_Error

0
répondu Tribhuvan Patel 2014-03-11 13:27:28