it-swarm.com.de

Servieren von favicon.ico in ASP.NET MVC

Was ist die endgültige/beste Empfehlung für die Bereitstellung von favicon.ico in ASP.NET MVC?

Ich mache derzeit folgendes:

  • Hinzufügen eines Eintrags zum very-Anfang meiner RegisterRoutes-Methode:

    routes.IgnoreRoute("favicon.ico");
    
  • Platzieren Sie favicon.ico im Stammverzeichnis meiner Anwendung (die auch der Stamm meiner Domäne sein wird).

Ich habe zwei Fragen:

  • Gibt es keine Möglichkeit, favicon.ico an einem anderen Ort als der Wurzel meiner Anwendung zu platzieren. Es ist ziemlich icky, auf derselben Ebene wie Content und Controllers zu sein.
  • Ist diese IgnoreRoute("favicon.ico")-Anweisung ausreichend - oder sollte ich Folgendes tun, wie in einem Blogpost von Phil Haack diskutiert. Ich bin mir nicht bewusst, dass ich jemals eine Anfrage an favicon.ico in einem anderen Verzeichnis als dem Stammverzeichnis gesehen habe. Dies würde dies unnötig machen.

    routes.IgnoreRoute("{*favicon}", new {[email protected]"(.*/)?favicon.ico(/.*)?"});
    
245
Simon_Weaver

Wenn Sie favicon.ico im Stammverzeichnis Ihrer Domäne platzieren, wirkt sich dies nur auf IE5 und IIRC aus. Bei modernen Browsern sollten Sie ein Link-Tag einfügen können, das auf ein anderes Verzeichnis verweist:

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

Sie können auch Nicht-ico-Dateien für andere Browser als IE verwenden. Dafür würde ich möglicherweise die folgende bedingte Anweisung verwenden, um eine PNG für FF usw. und eine ICO für den IE bereitzustellen:

<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]-->
193
Chris

Ich stimme der Antwort von Chris zu, aber da es sich um eine spezifische ASP.NET MVC-Frage handelt, ist es besser, entweder die Razor-Syntax zu verwenden:

<link rel="icon" href="@Url.Content("~/content/favicon.ico")"/>

Oder traditionell

<link rel="icon" href="<%= Url.Content("~/content/favicon.ico") %>"/>

eher, als 

<link rel="icon" href="http://www.mydomain.com/content/favicon.ico"/>
216
AlexC

1) Sie können Ihr Favicon an die gewünschte Stelle setzen und dieses Tag Ihrem Seitenkopf hinzufügen

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

obwohl einige Browser versuchen, das Favicon standardmäßig von /favicon.ico abzurufen, sollten Sie IgnoreRoute verwenden.

2) Wenn ein Browser das Favicon in einem anderen Verzeichnis abfragt, wird ein Fehler 404 angezeigt, der in Ordnung ist. Wenn Sie das Link-Tag in Antwort 1 in Ihrer Masterseite haben, erhält der Browser das gewünschte Favicon.

18

Ich denke, dassfavicon.icoim Stammverzeichnis liegen sollte. Es gehört einfach da hin. 

Wenn Sie verschiedene Symbole bedienen möchten, setzen Sie sie in den Controller. Sie können dies tun. Wenn nicht - lassen Sie es einfach im Stammordner.

6
dmajkic

Keines der oben genannten Dinge funktionierte für mich. Ich löste dieses Problem schließlich, indem ich favicon.ico in myicon.ico umbenannte und im Kopf darauf verweise. <link rel="icon" href="~/myicon.ico" type="image/x-icon" />

2
Tracy Zhou

Es sollte auch möglich sein, einen Controller zu erstellen, der die ico-Datei zurückgibt, und die Route /favicon.ico so zu registrieren, dass sie auf diesen Controller verweist.

2
Carles Company

Verwenden Sie dies anstelle von nur favicon.ico, das tendenziell nach der Fav-Icon-Datei sucht 

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

Verwenden Sie den angeforderten Pfad und kombinieren Sie ihn mit der Fav-Symboldatei, damit diese die genaue Adresse erhält, nach der sie suchen soll 

Dadurch wurde der Fehler "Fav.icon" behoben, der immer auf Application_Error ausgelöst wird

0
Tribhuvan Patel

Alles, was Sie tun müssen, ist, app.UseStaticFiles(); in Ihrem startup.cs -> public void Configure(IApplicationBuilder app, IHostingEnvironment env) hinzuzufügen.

Der ASP.net-Kern bietet eine hervorragende Möglichkeit, statische Dateien abzurufen. Das ist der wwwroot-Ordner. Bitte lesen Sie die statischen Dateien von in ASP.NET Core .

Die Verwendung des <Link /> ist keine sehr gute Idee. Warum sollte jemand das Link-Tag in jeder HTML- oder cshtml-Datei für favicon.ico hinzufügen? 

0
Ripal Barot