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
etControllers
. -
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(/.*)?"});
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]-->
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"/>
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.
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.
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.
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" />
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