Qual é a recomendação final / melhor para servir o favicon.ico no ASP.NET MVC?
Atualmente, estou fazendo o seguinte:
Adicionando uma entrada ao início do meu método RegisterRoutes:
routes.IgnoreRoute("favicon.ico");
Colocar o favicon.ico na raiz do meu aplicativo (que também será a raiz do meu domínio).
Eu tenho duas perguntas:
- Não há como colocar o favicon.ico em outro lugar que não seja a raiz do meu aplicativo. É muito nojento estar ali no mesmo nível que
Content
eControllers
. Esta
IgnoreRoute("favicon.ico")
afirmação é suficiente - ou devo também fazer o seguinte, conforme discutido em um post de Phil Haack . Não estou ciente de ter visto uma solicitação para o favicon.ico em qualquer diretório que não seja o root - o que tornaria isso desnecessário (mas é bom saber como fazê-lo).routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
asp.net
asp.net-mvc
razor
favicon
Simon_Weaver
fonte
fonte
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 rotanew {}
Respostas:
A colocação de favicon.ico na raiz do seu domínio afeta realmente apenas o IE5, IIRC. Para navegadores mais modernos, você deve poder incluir uma tag de link para apontar para outro diretório:
Você também pode usar arquivos não ico para navegadores que não sejam o IE, para os quais eu talvez usaria a seguinte declaração condicional para servir um PNG para FF, etc, e um ICO para o IE:
fonte
Concordo com a resposta de Chris, mas, como essa é uma pergunta específica do ASP.NET MVC, seria melhor usar a sintaxe do Razor:
Ou tradicionalmente
ao invés de
fonte
1) Você pode colocar seu favicon onde quiser e adicionar essa tag ao cabeçalho da página
embora alguns navegadores tentem obter o favicon de /favicon.ico por padrão, você deve usar o IgnoreRoute.
2) Se um navegador solicitar o favicon em outro diretório, ele receberá um erro 404, o que é bom e se você tiver a tag do link na resposta 1 da sua página principal, o navegador obterá o favicon desejado.
fonte
Eu acho que o favicon.ico deve estar na pasta raiz. Apenas pertence a isso.
Se você deseja servidor de ícones diferentes - coloque-o no controlador. Você pode fazer isso. Caso contrário, deixe-o na pasta raiz.
fonte
Nenhuma das opções acima funcionou para mim. Finalmente resolvi esse problema renomeando favicon.ico para myicon.ico e referenciá-lo na cabeça
<link rel="icon" href="~/myicon.ico" type="image/x-icon" />
fonte
Também deve ser possível criar um controlador que retorne o arquivo ico e registrar a rota /favicon.ico para apontar para esse controlador.
fonte
Tudo que você precisa fazer é adicionar o
app.UseStaticFiles();
seu startup.cs ->public void Configure(IApplicationBuilder app, IHostingEnvironment env)
.O núcleo do ASP.net fornece uma excelente maneira de obter arquivos estáticos. Isso está usando a pasta wwwroot. Leia os arquivos estáticos no ASP.NET Core .
Usar o
<Link />
não é uma ideia muito boa. Por que alguém adicionaria a tag de link em cada HTML ou cshtml para o favicon.ico?fonte
Use isso em vez de apenas o favicon.ico, que tende a procurar o arquivo de ícone fav
Use o caminho solicitado e combine com o arquivo de ícone fav para que ele obtenha o endereço exato que sua pesquisa
Usar isso resolveu o erro Fav.icon, que é gerado sempre no Application_Error
fonte
Constatou que no .Net Core, colocar o favicon.ico em / lib em vez de wwwroot corrige o problema
fonte