Почему Chrome ищет мой favicon.ico, когда я подаю файл с ASP.NET MVC?

  • имеют конструктор, который выдает исключение, и имеют обработчики в вызывающей функции для его обработки.

Да. Разработать по контракту и оставить предварительную проверку включенной, а в случае неудачи вывести исключение. Нет больше недействительных раз.

  • имеют флаг в классе и устанавливают его в true, только если значения приемлемы для конструктора, и программа проверяет флаг сразу после построения.

Может быть. Приемлемо в сложных случаях, но опять же, бросить, если проверка не удалась.

  • есть отдельная (возможно, статическая) функция для вызова, чтобы проверить входные параметры непосредственно перед вызовом конструктора.

Может быть. Речь идет о том, чтобы сказать, верны ли входные данные, или нет, и может быть полезно, если сказать, что это нетривиально, но см. Выше для , как реагировать в случае неверных данных.

  • переработать класс так, чтобы он мог быть построен из любых входных параметров.

Нет. Вы в основном отложите проблему.

14
задан joshcomley 13 July 2009 в 13:47
поделиться

10 ответов

Это не имеет ничего общего с MVC. Я использую веб-формы с настраиваемой службой журналов, и я наткнулся на этот пост, задаваясь вопросом, почему у меня в журналах постоянно возникают ошибки «Файл не существует». Это локально на моей машине разработки, у меня нет файлов favicon.ico в моих проектах, и я пробовал IE, Firefox и Google, пытаясь определить, какой браузер виноват.

Каждый запрос от Google Chrome к моим приложениям делает запрос на favicon.ico . Мне пришлось запустить локальный журнал браузера, чтобы определить, что на самом деле виноват браузер Google. Я бы связался с Google, если это вас беспокоит. Я просто хотел убедиться, что мой Chrome не заразил какой-то новый троян.

7
ответ дан 1 December 2019 в 12:13
поделиться

У вас есть значок? Если нет, возможно, поэтому Chrome каждый раз пытается найти его для вашего веб-сайта. В Google уже есть кешированный значок.

4
ответ дан 1 December 2019 в 12:13
поделиться

Некоторое время назад я столкнулся с этой проблемой и решил ее, игнорируя конкретный маршрут, добавив

routes.IgnoreRoute("{*favicon}", new { favicon = ".*/favicon\\.ico" });

в метод RegisterRoutes в Global.asax.

2
ответ дан 1 December 2019 в 12:13
поделиться

вы могли бы сделать так, чтобы MVC игнорировал любой запрос для * .ico, чтобы вы не получали никаких исключений во время отладки.

Должно быть что-то вроде этого:

routes.MapRoute("ignore-favicon", "{*path}", null, new {path = ".*/favicon\\.ico"});

Это Шаблон URL соответствует всему, но затем мы ограничиваем его совпадением только с тем, что заканчивается на favicon.ico. (Я не тестировал это)

4
ответ дан 1 December 2019 в 12:13
поделиться

If you check your project setting it says default icon somewhere. Remove that?

0
ответ дан 1 December 2019 в 12:13
поделиться

Chrome browser could work with Google site in another way than with any other site, so, at first, I would recommend to check if it looks for favicon.ico every time somewhere else, for example, on StackOverflow.

I would also check if Firefox does the same with your site. I think favicon.ico should be requested only one time per browser run even if it isn't present on site. This could be bug in Chrome version you use.

0
ответ дан 1 December 2019 в 12:13
поделиться

You should set the Expires header to tell the browser how long it should use its local copy.

0
ответ дан 1 December 2019 в 12:13
поделиться

Этот вопрос / ответ SO объясняет, как передать значок Favicon в браузер с помощью маршрутов.

0
ответ дан 1 December 2019 в 12:13
поделиться

Важно поместить ссылку ICON на главную страницу, иначе некоторые браузеры попытаются найти favicon.ico для всех каталогов, а не только глобально, когда это будет сделано.

 <link rel="SHORTCUT ICON" href="<%= Url.Content("~/content/images/rr-favicon.ico") %>"/>

Судя по моим журналам (и, конечно, IE6), похоже, виновата панель инструментов Google. Они оба будут делать запросы для каталогов, отличных от корневого

 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
 Mozilla/4.0 (compatible; GoogleToolbar 6.2.1910.1554; Windows 6.0; MSIE 8.0.6001.18828)
0
ответ дан 1 December 2019 в 12:13
поделиться

Вы можете добавить что-то подобное в свой файл web.config , чтобы убедиться, что favicon.ico кэшируется на клиенте, а не запрашивается каждый раз.

<location path="favicon.ico">
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Cache-Control" value="public, max-age=31536000" />
             </customHeaders>
        </httpProtocol>
    </system.webServer>
</location>

Вы можете / должны сделать то же самое для любых файлов изображений / .js и css

1
ответ дан 1 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: