260 votes

Servir favicon.ico dans ASP.NET MVC

Qu'est-ce que le final/la meilleure recommandation pour la manière de servir favicon.ico dans ASP.NET MVC?

Je suis actuellement en train de faire le suivant :

  • L'ajout d'une entrée au tout début de mon RegisterRoutes méthode :

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

J'ai deux questions :

  • Il n'y a pas moyen de mettre la 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 IgnoreRoute("favicon.ico") déclaration suffisant ou dois-je aussi faire ce qui suit comme expliqué dans un billet de blog de Phil Haack. Je ne suis pas au courant de jamais avoir vu une demande de favicon.ico dans le répertoire autre que la racine - qui rendrait inutiles (mais son bon de savoir comment faire).

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

235voto

AlexC Points 3557

Je suis d'accord avec la réponse de Chris, mais en voyant cet ASP.NET MVC question, il serait préférable d'utiliser la syntaxe Razor:

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

Ou traditionnellement

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

plutôt que de

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

209voto

Chris Points 2982

Placer favicon.ico à la racine de votre domaine seulement affecte vraiment IE5, IIRC. Pour plus d'navigateurs modernes vous devriez être en mesure d'inclure une balise 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 la non-ico des fichiers pour les navigateurs autre que IE, pour qui j'avais peut-être utiliser le conditionnel suivant la déclaration de servir un PNG à FF,etc, et un ICO-à-dire:

<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]-->

24voto

Eduardo Campañó Points 4801

1) Vous pouvez mettre votre favicon où vous voulez et ajouter ce tag à votre page de la tête

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

bien que certains navigateurs vont essayer d'obtenir le favicon à partir de /favicon.ico par défaut, vous devez utiliser le IgnoreRoute.

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

7voto

dmajkic Points 2694

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

Si vous voulez server différentes icônes - la mise en controler. Vous pouvez le faire. Si ce n'est pas juste de le laisser dans le dossier racine.

2voto

Carles Company Points 2937

Il devrait également être possible de créer un contrôleur qui renvoie le fichier ico et enregistrer la route /favicon.ico à point à qui contrôleur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X