Сервировочный фавикон.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 239

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