Сервировочный фавикон.ico in ASP.NET MVC
какова окончательная / лучшая рекомендация для того, как служить favicon.ico in ASP.NET MVC?
в настоящее время я делаю следующее:
-
добавить запись начало моего метода RegisterRoutes:
routes.IgnoreRoute("favicon.ico");
размещение favicon.ico в корне моего приложения (который также будет корнем моего домена).
у меня есть два вопросы:
- нет никакого способа поставить фавикон.ico где-то кроме корня моего приложения. Это довольно неприятно быть прямо там, на том же уровне, что и
Content
иControllers
. -
это
IgnoreRoute("favicon.ico")
заявление достаточно - или я должен сделать следующее, как описано в сообщение в блоге от Фила Хаака. Я не знаю, когда-либо видел запрос в favicon.ico в любом каталоге, кроме корневого-что бы сделать это ненужные (но это хорошо, чтобы знать, как это сделать).routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
7 ответов:
размещение фавикона.ico в корне вашего домена действительно влияет только на IE5, IIRC. Для более современных браузеров вы должны быть в состоянии включить ссылку тег, чтобы указать на другой каталог:
<link rel="SHORTCUT ICON" href="http://www.mydomain.com/content/favicon.ico"/>
вы также можете использовать файлы без ico для браузеров, отличных от IE, для которых я, возможно, использую следующий условный оператор для обслуживания PNG для FF и т. д. и ICO для 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]-->
Я согласен с ответом от Криса, но видя это конкретный ASP.NET вопрос MVC было бы лучше использовать любой синтаксис Razor:
<link rel="icon" href="@Url.Content("~/content/favicon.ico")"/>
или традиционно
<link rel="icon" href="<%= Url.Content("~/content/favicon.ico") %>"/>
, а не
<link rel="icon" href="http://www.mydomain.com/content/favicon.ico"/>
1) Вы можете поместить свой фавикон туда, где вы хотите, и добавить этот тег в заголовок страницы
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
хотя некоторые браузеры будут пытаться получить favicon из /favicon.ico по умолчанию, поэтому вы должны использовать IgnoreRoute.
2) Если браузер делает запрос на фавикон в другом каталоге, он получит ошибку 404, которая прекрасна, и если у вас есть тег ссылки в ответе 1 на главной странице, браузер получит нужный вам фавикон.
думаю, что фавикон.ico должен быть в корневой папке. Он просто должен быть там.
Если вы хотите использовать разные значки-поместите его в контроллер. Ты можешь это сделать. Если нет-просто оставьте его в корневой папке.
также должно быть возможно создать контроллер, который возвращает файл ico и регистрирует маршрут /favicon.ico, чтобы указать на этот контроллер.
ни один из выше работал для меня. Я, наконец, решил эту проблему, переименовав favicon.ico в myicon.ico, и ссылка на него в голове
<link rel="icon" href="~/myicon.ico" type="image/x-icon" />
используйте это вместо просто favicon.Ико, которая, как правило для поиска значок файла Fav
> <link rel="ICON" > href="@System.IO.Path.Combine(Request.PhysicalApplicationPath, > "favicon.ico")" />
используйте запрошенный путь и объедините его с файлом значка fav, чтобы он получил точный адрес, который его поиск
С помощью этого решается Fav.значок ошибка, которая возникает всегда на Application_Error