Question

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

Je suis en train de faire ce qui suit:

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

    routes.IgnoreRoute("favicon.ico");
    
  • Placer favicon.ico à 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 fichier favicon.ico ailleurs qu'à la racine de mon application. C’est assez méchant d’être au même niveau que Content et Controllers.
  • Cette IgnoreRoute("favicon.ico") déclaration est-elle suffisante - ou devrais-je également procéder comme indiqué dans la section un article de blog de Phil Haack . Je ne suis pas au courant d'avoir déjà vu une demande de favicon.ico dans un répertoire autre que le répertoire racine, ce qui rendrait cela inutile (mais il est bon de savoir comment le faire).

    routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
    
Était-ce utile?

La solution

Placer favicon.ico à la racine de votre domaine n’affecte que réellement IE5, IIRC. Pour les navigateurs plus modernes, vous devriez pouvoir 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 des fichiers non-ico pour des navigateurs autres que IE, pour lesquels je pourrais peut-être utiliser l'instruction conditionnelle suivante pour servir un fichier PNG au format FF, etc., ainsi qu'un ICO pour 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]-->

Autres conseils

Je suis d'accord avec la réponse de Chris, mais vu qu'il s'agit d'une question ASP.NET MVC spécifique, 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

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

1) Vous pouvez placer votre favicon où vous voulez et ajouter cette balise à l'en-tête de votre page

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

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

2) Si un navigateur demande une favicon dans un autre répertoire, il obtiendra une erreur 404, ce qui est correct. Si vous avez la balise link dans la réponse 1 de votre page maître, le navigateur obtiendra la favicon souhaitée.

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

Si vous voulez utiliser plusieurs icônes, mettez-le dans controler. Vous pouvez le faire. Sinon, laissez-le simplement dans le dossier racine.

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érant dans la tête <link rel="icon" href="~/myicon.ico" type="image/x-icon" />

Il devrait également être possible de créer un contrôleur qui renvoie le fichier ico et d’enregistrer la route /favicon.ico pour qu'elle pointe vers ce contrôleur.

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

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

Utilisez le chemin demandé et combinez-le avec le fichier d'icônes fav afin qu'il obtienne l'adresse exacte recherchée par sa recherche

L’utilisation de ceci a résolu l’erreur Fav.icon qui est toujours générée sur Application_Error

.

Tout ce que vous avez à faire est d’ajouter app.UseStaticFiles(); à votre startup.cs - > public void Configure(IApplicationBuilder app, IHostingEnvironment env).

Le noyau ASP.net constitue un excellent moyen d’obtenir des fichiers statiques. Cela utilise le dossier wwwroot. Veuillez lire fichiers statiques dans ASP.NET. Noyau .

L’utilisation de <Link /> n’est pas une très bonne idée. Pourquoi quelqu'un ajouterait-il la balise link sur chaque HTML ou cshtml pour le fichier favicon.ico?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top