Pergunta

O que é o final / melhor recomendação para servir como favicon.ico no ASP.NET MVC?

Atualmente, estou fazendo o seguinte:

  • Adicionando uma entrada para o início do meu método RegisterRoutes:

    routes.IgnoreRoute("favicon.ico");
    
  • Colocar favicon.ico na raiz do meu aplicativo (que também vai ser a raiz do meu domínio).

Eu tenho duas perguntas:

  • Não há nenhuma maneira de colocar o favicon.ico em algum lugar que não seja a raiz do meu aplicativo. É muito nojento estar ali, ao mesmo nível que Content e Controllers.
  • Esta declaração é IgnoreRoute("favicon.ico") suficiente - ou devo também fazer o seguinte, como discutido em um post no blog de Phil Haack . Eu não estou ciente de já ter visto um pedido para favicon.ico em qualquer diretório diferente da raiz - o que faria isso desnecessário (mas é bom saber como fazê-lo)

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

Solução

Colocar favicon.ico na raiz do seu domínio realmente só afeta IE5, IIRC. Para navegadores mais modernos que você deve ser capaz de incluir uma tag link para apontar para outro diretório:

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

Você também pode usar arquivos não-ico para navegadores diferentes do IE, para o qual eu talvez usar a seguinte declaração condicional para servir a um PNG para FF, etc, e um 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]-->

Outras dicas

Eu concordo com a resposta de Chris, mas vendo esta é uma questão específica ASP.NET MVC seria melhor para usar sintaxe Navalha:

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

Ou tradicionalmente

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

em vez de

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

1) Você pode colocar o seu favicon onde você quer e adicione tag para a sua cabeça página

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

embora alguns navegadores irá tentar obter o favicon de /favicon.ico por padrão, então você deve usar o IgnoreRoute.

2) Se um navegador faz uma solicitação para o favicon em outro diretório que irá receber um erro 404 wich é bom e se você tiver a tag link em resposta 1 em sua página mestre o navegador irá obter o favicon que você deseja.

Eu acho que favicon.ico deve estar na pasta raiz. Ele só pertence lá.

Se você quiser servere ícones diferentes - colocá-lo em controler. Você pode fazer isso. Se não - apenas deixá-lo na pasta raiz

.

Nenhuma das opções acima funcionou para mim. Eu finalmente resolvido este problema, renomeando favicon.ico para MyIcon.ico, e referenciá-lo na cabeça <link rel="icon" href="~/myicon.ico" type="image/x-icon" />

Também deve ser possível criar um controlador que retorna o arquivo ico e registrar o /favicon.ico rota para apontar para esse controlador.

Use isso em vez de apenas o favicon.ico que tende a pesquisar o arquivo de ícone fav

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

Use o caminho solicitado e combinar com o arquivo de ícone fav para que ele obtém o endereço exato que sua busca por

Usando esta resolvido o erro Fav.icon que é levantada sempre em Application_Error

Tudo que você precisa fazer é adicionar app.UseStaticFiles(); em seus startup.cs -.> public void Configure(IApplicationBuilder app, IHostingEnvironment env)

ASP.net núcleo oferece uma excelente maneira de obter arquivos estáticos. Que está usando a pasta wwwroot. Por favor, leia estáticos em ASP.NET core.

Usando o <Link /> não é uma idéia muito boa. Por que alguém iria adicionar a tag link em cada HTML ou cshtml para o favicon.ico?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top