Какова последняя / лучшая рекомендация о том, как обслуживать favicon.ico в ASP.NET MVC?
В настоящее время я делаю следующее:
Добавление записи в самое начало моего метода RegisterRoutes:
routes.IgnoreRoute("favicon.ico");
Размещение favicon.ico в корне моего приложения (которое также будет корнем моего домена).
У меня есть два вопроса:
- Нет ли способа поместить favicon.ico куда-нибудь, кроме корня моего приложения. Это довольно странно, быть на том же уровне, что
Content
иControllers
. IgnoreRoute("favicon.ico")
Достаточно ли этого утверждения - или я должен также сделать следующее, как обсуждалось в блоге Фила Хаака . Я не знаю, чтобы когда-либо видел запрос к favicon.ico в любом каталоге, кроме корневого, что сделало бы это ненужным (но полезно знать, как это сделать).routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
asp.net
asp.net-mvc
razor
favicon
Simon_Weaver
источник
источник
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))(/.*)?" });
Проигнорируйте Уведомление о маршруте thewnew {}
,Ответы:
Размещение favicon.ico в корне вашего домена действительно влияет только на IE5, IIRC. Для более современных браузеров вы должны иметь возможность включить тег ссылки, указывающий на другой каталог:
Вы также можете использовать файлы не-ico для браузеров, отличных от IE, для которых я мог бы использовать следующий условный оператор для обслуживания PNG в FF и т. Д. И ICO для IE:
источник
Я согласен с ответом Криса, но, учитывая, что это конкретный вопрос ASP.NET MVC, было бы лучше использовать любой синтаксис Razor:
Или традиционно
скорее, чем
источник
1) Вы можете поместить свой значок сайта в нужное место и добавить этот тег в заголовок страницы.
хотя некоторые браузеры по умолчанию пытаются получить значок из /favicon.ico, поэтому вы должны использовать IgnoreRoute.
2) Если браузер сделает запрос на значок в другом каталоге, он получит ошибку 404, что нормально, и если у вас есть тег ссылки в ответе 1 на главной странице, браузер получит нужный значок.
источник
Я думаю, что favicon.ico должен быть в корневой папке. Это просто принадлежит там.
Если вы хотите обслуживать разные иконки - поместите его в контроллер. Вы можете сделать это. Если нет - просто оставьте его в корневой папке.
источник
Ничто из вышеперечисленного не помогло мне. Я наконец-то решил эту проблему, переименовав favicon.ico в myicon.ico и сославшись на это в голове
<link rel="icon" href="~/myicon.ico" type="image/x-icon" />
источник
Также должна быть возможность создать контроллер, который возвращает файл ico, и зарегистрировать маршрут /favicon.ico, указывающий на этот контроллер.
источник
Все, что вам нужно сделать, это добавить
app.UseStaticFiles();
в свой startup.cs ->public void Configure(IApplicationBuilder app, IHostingEnvironment env)
.Ядро ASP.net предоставляет отличный способ получить статические файлы. Это использует папку wwwroot. Пожалуйста, прочитайте статические файлы в ASP.NET Core .
Использование
<Link />
не очень хорошая идея. Зачем кому-то добавлять тег ссылки на каждый HTML или cshtml для favicon.ico?источник
Используйте это вместо просто favicon.ico, который имеет тенденцию искать файл значка fav
Используйте запрошенный путь и объедините его с файлом значков избранного, чтобы он получил точный адрес, который ищет
Использование этого решило ошибку Fav.icon, которая всегда возникает в Application_Error
источник
Обнаружил, что в .Net Core решение проблемы с размещением favicon.ico в / lib вместо wwwroot устраняет проблему.
источник