¿Cuál es la mejor / última recomendación sobre cómo servir favicon.ico en ASP.NET MVC?
Actualmente estoy haciendo lo siguiente:
Agregar una entrada al comienzo de mi método RegisterRoutes:
routes.IgnoreRoute("favicon.ico");
Colocar favicon.ico en la raíz de mi aplicación (que también será la raíz de mi dominio).
Tengo dos preguntas:
- ¿No hay forma de poner el favicon.ico en otro lugar que no sea la raíz de mi aplicación? Es bastante asqueroso estar allí al mismo nivel que
Content
yControllers
. ¿Es
IgnoreRoute("favicon.ico")
suficiente esta afirmación? ¿O debería hacer lo siguiente como se discutió en una publicación de blog de Phil Haack ? No estoy al tanto de haber visto alguna vez una solicitud para favicon.ico en cualquier directorio que no sea la raíz, lo que haría que esto sea innecesario (pero es bueno saber cómo hacerlo).routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
asp.net
asp.net-mvc
razor
favicon
Simon_Weaver
fuente
fuente
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))(/.*)?" });
aviso de ruta thewnew {}
,Respuestas:
Colocar favicon.ico en la raíz de su dominio solo afecta realmente a IE5, IIRC. Para navegadores más modernos, debería poder incluir una etiqueta de enlace para apuntar a otro directorio:
También puede usar archivos que no sean ico para navegadores que no sean IE, para lo cual quizás use la siguiente declaración condicional para servir un PNG a FF, etc., y un ICO a IE:
fuente
Estoy de acuerdo con la respuesta de Chris, pero al ver que esta es una pregunta específica de ASP.NET MVC, sería mejor usar la sintaxis Razor:
O tradicionalmente
más bien que
fuente
1) Puedes poner tu favicon donde quieras y agregar esta etiqueta al encabezado de tu página
aunque algunos navegadores intentarán obtener el favicon de /favicon.ico de forma predeterminada, por lo que debe usar IgnoreRoute.
2) Si un navegador solicita el favicon en otro directorio, obtendrá un error 404 que está bien y si tiene la etiqueta de enlace en la respuesta 1 en su página maestra, el navegador obtendrá el favicon que desea.
fuente
Creo que favicon.ico debería estar en la carpeta raíz. Simplemente pertenece allí.
Si desea servir diferentes iconos, póngalo en control. Usted puede hacer eso. Si no, simplemente déjelo en la carpeta raíz.
fuente
Nada de lo anterior funcionó para mí. Finalmente resolví este problema cambiando el nombre de favicon.ico a myicon.ico, y lo mencioné en la cabeza
<link rel="icon" href="~/myicon.ico" type="image/x-icon" />
fuente
También debería ser posible crear un controlador que devuelva el archivo ico y registrar la ruta /favicon.ico para que apunte a ese controlador.
fuente
Todo lo que necesita hacer es agregar
app.UseStaticFiles();
su startup.cs ->public void Configure(IApplicationBuilder app, IHostingEnvironment env)
.ASP.net core proporciona una excelente manera de obtener archivos estáticos. Eso está usando la carpeta wwwroot. Lea los archivos estáticos en ASP.NET Core .
Usar el
<Link />
no es una muy buena idea. ¿Por qué alguien agregaría la etiqueta de enlace en cada HTML o cshtml para favicon.ico?fuente
Use esto en lugar de solo el favicon.ico que tiende a buscar el archivo de icono fav
Use la ruta solicitada y combínela con el archivo de icono de favoritos para obtener la dirección precisa que busca
El uso de esto resolvió el error Fav.icon que se genera siempre en Application_Error
fuente
Encontró que en .Net Core, colocar el favicon.ico en / lib en lugar de wwwroot soluciona el problema
fuente