238 votos

Servir favicon.ico en ASP.NET MVC

¿Cuál es el/final mejor recomendación para servir favicon.ico en ASP.NET MVC?

Actualmente estoy realizando el siguiente :

  • Adición de una entrada para el comienzo de mi registerroutes al método :

    routes.IgnoreRoute("favicon.ico");
    
  • Colocar favicon.ico en el directorio raíz de mi solicitud (que también va a ser la raíz de mi dominio).

Tengo dos preguntas :

  • No hay manera de poner favicon.ico en algún lugar distinto de la raíz de mi solicitud. Su bastante repulsivo el derecho de estar allí en el mismo nivel como Content y Controllers.
  • Es este IgnoreRoute("favicon.ico") instrucción suficiente - o debería hacer lo siguiente como comentamos en un post en el blog de Phil Haack. Yo no soy consciente de haber visto nunca una solicitud para favicon.ico en el directorio distinto de la raíz, lo cual haría innecesario (pero es bonito saber cómo hacerlo).

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

203voto

AlexC Puntos 3557

Estoy de acuerdo con la respuesta de Chris, pero viendo que esto es un ASP.NET MVC pregunta sería mejor utilizar la sintaxis de Afeitar:

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

O tradicionalmente

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

en lugar de

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

188voto

Chris Puntos 2982

Colocar favicon.ico en el directorio raíz de tu dominio en realidad sólo afecta a IE5, si mal no recuerdo. Para obtener más modernas de los navegadores usted debe ser capaz de incluir un link a punto a otro directorio:

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

También puede utilizar la no-ico archivos para navegadores distintos de IE, por lo que me gustaría, tal vez de usar la siguiente instrucción condicional para servir a un PNG a FF,etc, y un ICO para 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]-->

16voto

Eduardo Campañó Puntos 4801

1) Usted puede poner su favicon donde quieras y agregar esta etiqueta a la página en la cabeza

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

aunque algunos de los navegadores va a tratar de conseguir el favicon de /favicon.ico por defecto, por lo que debe utilizar la IgnoreRoute.

2) Si un navegador hace una petición para el favicon en otro directorio que se va a obtener un error 404 que está muy bien y si tiene la etiqueta de enlace en la respuesta 1 en su página principal en el navegador recibirá el favicon que usted desea.

6voto

dmajkic Puntos 2694

Creo que favicon.ico debe estar en la carpeta raíz. Sólo pertenece allí.

Si desea server diferentes iconos - poner en controler. Usted puede hacer eso. Si no, basta con dejarlo en la carpeta raíz.

2voto

Carles Company Puntos 2937

También debería ser posible para crear un controlador que devuelve el archivo ico y registrar la ruta /favicon.ico a punto para ese controlador.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: