Quelle est la recommandation finale / meilleure sur la façon de servir favicon.ico dans ASP.NET MVC?
Je fais actuellement 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 favicon.ico ailleurs que la racine de mon application. C'est assez bizarre d'être là au même niveau que
Content
etControllers
. Cette
IgnoreRoute("favicon.ico")
déclaration est-elle suffisante - ou devrais-je également faire ce qui suit comme discuté dans un article de blog 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(/.*)?"});
asp.net
asp.net-mvc
razor
favicon
Simon_Weaver
la source
la source
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
routes.MapRoute("IgnoreFavicon", "{*favicon}", new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
routes.MapRoute("Ingore", "{*favicon}", new { }, new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
Avis thewnew {}
,Réponses:
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 pour pointer vers un autre répertoire:
Vous pouvez également utiliser des fichiers non ico pour les navigateurs autres que IE, pour lesquels j'utiliserais peut-être l'instruction conditionnelle suivante pour servir un PNG à FF, etc., et un ICO à IE:
la source
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 la syntaxe Razor:
Ou traditionnellement
plutôt que
la source
1) Vous pouvez placer votre favicon où vous voulez et ajouter 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 qui est très 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.
la source
Je pense que favicon.ico devrait être dans le dossier racine. Il appartient juste là.
Si vous souhaitez servir différentes icônes - mettez-le dans le contrôleur. Vous pouvez le faire. Sinon - laissez-le simplement dans le dossier racine.
la source
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
<link rel="icon" href="~/myicon.ico" type="image/x-icon" />
la source
Il devrait également être possible de créer un contrôleur qui renvoie le fichier ico et d'enregistrer la route /favicon.ico pour pointer vers ce contrôleur.
la source
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 fournit un excellent moyen d'obtenir des fichiers statiques. Cela utilise le dossier wwwroot. Veuillez lire les fichiers statiques dans ASP.NET Core .
Utiliser le
<Link />
n'est pas une très bonne idée. Pourquoi quelqu'un ajouterait-il la balise de lien sur chaque HTML ou cshtml pour le favicon.ico?la source
Utilisez-le au lieu de simplement favicon.ico qui a tendance à rechercher le fichier d'icône fav
Utilisez le chemin demandé et combinez-le avec le fichier d'icônes fav afin qu'il obtienne l'adresse précise que sa recherche
L'utilisation de ceci a résolu l'erreur Fav.icon qui est toujours déclenchée sur Application_Error
la source
J'ai trouvé que dans .Net Core, placer le favicon.ico dans / lib plutôt que wwwroot résout le problème
la source