ASP.NET MVC에서 favicon.ico 제공


255

ASP.NET MVC에서 favicon.ico를 제공하는 방법에 대한 최종 권장 사항은 무엇입니까?

현재 다음을 수행하고 있습니다.

  • RegisterRoutes 메소드 의 맨 처음 에 항목 추가 :

    routes.IgnoreRoute("favicon.ico");
  • 내 응용 프로그램의 루트에 favicon.ico 배치 (또한 내 도메인의 루트가 됨).

두 가지 질문이 있습니다.

  • 내 응용 프로그램의 루트가 아닌 다른 곳에 favicon.ico를 넣을 방법이 없습니까? 그것은 같은 수준에서 바로 거기에있는 구역질 예쁘다 ContentControllers.
  • IgnoreRoute("favicon.ico")내용이 충분 합니까? Phil Haack의 블로그 게시물에서 설명한대로 다음을 수행해야합니다 . 루트가 아닌 다른 디렉토리에서 favicon.ico에 대한 요청을 본 적이 없습니다.이를 불필요하게 만들 수 있습니다 (그러나 방법을 아는 것이 좋습니다).

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

4
정규식은 '\'이어야합니다. '.'뿐만 아니라 favicon.ico의 점을 표시합니다.
NathanAldenSr

1
이것은 내가 사용하는 것입니다 (@NathanAldenSr의 조언을 고려하고 슬래시와 백 슬래시를 모두 지원하며 favicon.png 파일도 허용합니다) :routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
BrainSlugs83

@ BrainSlugs83-솔루션이 슬래시 인 누락 된 부분을 추가했습니다 ... .NET vNext 버전 (베타 -5)입니다. routes.MapRoute("IgnoreFavicon", "{*favicon}", new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
Rentering.com

수정, vNext 경로 routes.MapRoute("Ingore", "{*favicon}", new { }, new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" }); 고지 무시 thew new {},
Rentering.com

답변:


204

도메인의 루트에 favicon.ico를두면 IE5, IIRC에만 영향을 미칩니다. 최신 브라우저의 경우 다른 디렉토리를 가리키는 링크 태그를 포함 할 수 있어야합니다.

<link rel="SHORTCUT ICON" href="http://www.mydomain.com/content/favicon.ico"/>

IE 이외의 브라우저에 ico가 아닌 파일을 사용할 수도 있습니다.이 경우 다음 조건문을 사용하여 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]-->

25
모든 환경에서 작동하도록 링크를 생성하려면 @ Url.Content를 사용해야합니다. AlexC 님의 답변 살펴보기
RickAndMSFT

5
ASP.NET의 경우에는 사실입니다. 내 대답은 "일반"버전 (일반 HTML)을 보여 주므로 누구나 프레임 워크 / 언어 선택에 맞게 수정할 수 있습니다.
Chris

이다 중요한 이 해당 브라우저 사용자를 위해 작동하지 않습니다 그래서, IE10은 조건부 주석을 지원하지 않습니다 수 있습니다. 해결책은 파비콘을 사이트의 루트 디렉토리에 추가하는 것입니다. IE10은 파비콘에 대한 링크를 찾지 못하면 자동으로 선택합니다.
Kevin Babcock

2
IE11 PNG 파비콘을 이해하고 조건문을 지정할 필요가 없습니다. 이 좋은 기사를보아야합니다 : jonathantneal.com/blog/understand-the-favicon
QMaster

고마워 친구! 하단 부분은 실제로 png 작업에 도움이되며 페이지 상단, 마스터 페이지 또는 레이아웃에 있어야합니다.
Alper

226

나는 Chris의 대답에 동의하지만 이것이 특정 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"/>

3
진실. 내 대답은 "일반"버전 (HTML)을 보여 주었으므로 누구나 프레임 워크 / 언어 선택에 맞게 수정할 수 있습니다.
Chris

2
@Diego-예, rel = "SHORTCUT ICON"은 Internet Explorer에서 사용하는 비표준 구현입니다. 공백은 W3C 표준의 구분 문자입니다 ( developer.mozilla.org/en-US/docs/Web/HTML/Element/link 참조 ). Internet Explorer 이외의 브라우저에서 올바른 구문은 <link rel = "icon"href = "path / to / favicon.ico"> 입니다. 자세한 내용은 jonathantneal.com/blog/understand-the-favicon 을 참조하십시오 . 분명히 위와 같이 아이콘 경로에 Razor 또는 Web Forms 구문을 사용할 수 있습니다.
pwdst 2016 년

3
MVC 4를 사용하면이 경우 자동으로 처리되므로 Url.Content가 필요하지 않습니다. <link rel = "icon"href = "~ / content / favicon.ico"/>
Stuart Hallows

20

1) 원하는 위치에 파비콘을 넣고이 태그를 페이지 헤드에 추가 할 수 있습니다

<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />

일부 브라우저는 기본적으로 /favicon.ico에서 즐겨 찾기 아이콘을 가져 오려고하지만 IgnoreRoute를 사용해야합니다.

2) 브라우저가 다른 디렉토리에서 파비콘을 요청하면 404 오류가 발생하고 마스터 페이지의 답변 1에 링크 태그가 있으면 브라우저에 원하는 파비콘이 표시됩니다.


2
사이트를 북마크하면 브라우저가 가서 .ico 파일을 찾게되는데 도움이되지 않습니다. 그러나 브라우저가 그것을 기억하는지 궁금합니다. Fiddler에서 때로는 많은 아이콘이 검색되는 것을 볼 수 있습니다. 아마도 그것은 구글 툴바입니까?
Simon_Weaver 2012 년

난 당신이 맞아요, 북마크 아이콘 만 나는 어쩌면이 경우 이유를 알아 낸 적이 가끔 일을 생각
에두아르도 CAMPANO을

7

favicon.ico 는 루트 폴더에 있어야 한다고 생각 합니다. 그것은 단지 거기에 속합니다.

다른 아이콘을 서버에 넣으려면 컨트롤러에 넣으십시오. 그렇게 할 수 있습니다. 그렇지 않은 경우 루트 폴더에 그대로 두십시오.


1
나는 동의한다. 이 폴더는 루트 폴더에 있으며 다른 곳에 있으면 안됩니다 ... 루트 폴더에 있으면 즐겨 찾기 아이콘에 HTML 태그가 필요하지 않습니다. 모든 일반적인 브라우저에서 작동합니다.
Vinz

처음에는 이것이 절대적으로 불길한 것처럼 보였지만 그 주변에는 방법이 없었습니다. 로깅은 다른 사용자 에이전트의 404 오류를 계속 표시합니다.
Michiel Cornille

3

위의 어느 것도 나를 위해 일하지 않았습니다. 마지막으로 favicon.ico를 myicon.ico로 이름을 바꾸어이 문제를 해결하고 헤드에서 참조<link rel="icon" href="~/myicon.ico" type="image/x-icon" />


2

ico 파일을 리턴하는 제어기를 작성하고 해당 제어기를 가리 키도록 /favicon.ico 경로를 등록 할 수도 있습니다.


2

app.UseStaticFiles();startup.cs-> 에 추가 하기 만하면 public void Configure(IApplicationBuilder app, IHostingEnvironment env)됩니다.

ASP.net 코어는 정적 파일을 얻는 훌륭한 방법을 제공합니다. wwwroot 폴더를 사용하고 있습니다. ASP.NET Core에서 정적 파일을 읽으십시오 .

를 사용 <Link />하는 것은 좋은 생각이 아닙니다. favicon.ico의 각 HTML 또는 CSS에 링크 태그를 추가하는 이유는 무엇입니까?


0

즐겨 찾기 아이콘 파일을 검색하는 favicon.ico 대신 이것을 사용하십시오.

> <link rel="ICON" 
> href="@System.IO.Path.Combine(Request.PhysicalApplicationPath,
> "favicon.ico")" />

요청 된 경로를 사용하고 즐겨 찾기 아이콘 파일과 결합하여 검색 한 정확한 주소를 얻습니다.

이를 사용하면 Application_Error에서 항상 발생하는 Fav.icon 오류가 해결되었습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.