Was ist die endgültige / beste Empfehlung für die Bereitstellung von favicon.ico in ASP.NET MVC?
Ich mache gerade Folgendes:
Hinzufügen eines Eintrags ganz am Anfang meiner RegisterRoutes-Methode:
routes.IgnoreRoute("favicon.ico");
Platzieren von favicon.ico im Stammverzeichnis meiner Anwendung (das auch das Stammverzeichnis meiner Domain sein wird).
Ich habe zwei Fragen:
- Gibt es keine Möglichkeit, die Datei favicon.ico an einer anderen Stelle als im Stammverzeichnis meiner Anwendung zu platzieren? Es ist ziemlich schwierig, genau dort zu sein, wo
Content
undControllers
. Ist diese
IgnoreRoute("favicon.ico")
Aussage ausreichend - oder soll ich tun , auch die folgende , wie in besprochen einer Blog - Post von Phil Haack . Mir ist nicht bekannt, dass ich jemals eine Anfrage an favicon.ico in einem anderen Verzeichnis als dem Stammverzeichnis gesehen habe - was dies unnötig machen würde (aber es ist gut zu wissen, wie es geht).routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
asp.net
asp.net-mvc
razor
favicon
Simon_Weaver
quelle
quelle
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
routes.MapRoute("IgnoreFavicon", "{*favicon}", new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
routes.MapRoute("Ingore", "{*favicon}", new { }, new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
Beachten Sie thewnew {}
,Antworten:
Das Platzieren von favicon.ico im Stammverzeichnis Ihrer Domain wirkt sich nur wirklich auf IE5, IIRC aus. Für modernere Browser sollten Sie ein Link-Tag einfügen können, um auf ein anderes Verzeichnis zu verweisen:
Sie können auch Nicht-ICO-Dateien für andere Browser als IE verwenden, für die ich möglicherweise die folgende bedingte Anweisung verwenden würde, um ein PNG an FF usw. und ein ICO an IE zu senden:
quelle
Ich stimme der Antwort von Chris zu, aber da dies eine spezifische ASP.NET MVC-Frage ist, ist es besser, eine der beiden Razor-Syntax zu verwenden:
Oder traditionell
eher, als
quelle
1) Sie können Ihr Favicon an der gewünschten Stelle platzieren und dieses Tag Ihrem Seitenkopf hinzufügen
Obwohl einige Browser standardmäßig versuchen, das Favicon von /favicon.ico abzurufen, sollten Sie IgnoreRoute verwenden.
2) Wenn ein Browser eine Anfrage für das Favicon in einem anderen Verzeichnis stellt, wird ein 404-Fehler angezeigt, der in Ordnung ist. Wenn Sie das Link-Tag in Antwort 1 auf Ihrer Masterseite haben, erhält der Browser das gewünschte Favicon.
quelle
Ich denke, dass favicon.ico im Stammordner sein sollte. Es gehört einfach da hin.
Wenn Sie verschiedene Symbole bedienen möchten, legen Sie sie in der Steuerung ab. Du kannst das tun. Wenn nicht, lassen Sie es einfach im Stammordner.
quelle
Keines der oben genannten hat bei mir funktioniert. Ich habe dieses Problem endlich gelöst, indem ich favicon.ico in myicon.ico umbenannt und im Kopf darauf verwiesen habe
<link rel="icon" href="~/myicon.ico" type="image/x-icon" />
quelle
Es sollte auch möglich sein, einen Controller zu erstellen, der die ico-Datei zurückgibt, und die Route /favicon.ico zu registrieren, um auf diesen Controller zu verweisen.
quelle
Alles was Sie tun müssen, ist
app.UseStaticFiles();
in Ihrem Startup.cs -> hinzuzufügenpublic void Configure(IApplicationBuilder app, IHostingEnvironment env)
.Der ASP.net-Kern bietet eine hervorragende Möglichkeit, statische Dateien abzurufen. Das ist der wwwroot Ordner. Bitte lesen Sie statische Dateien in ASP.NET Core .
Die Verwendung von
<Link />
ist keine sehr gute Idee. Warum sollte jemand das Link-Tag in jedem HTML- oder HTML-Code für die Datei favicon.ico hinzufügen?quelle
Verwenden Sie dies anstelle von favicon.ico, das dazu neigt, nach der fav-Symboldatei zu suchen
Verwenden Sie den angeforderten Pfad und kombinieren Sie ihn mit der bevorzugten Symboldatei, damit die genaue Adresse angezeigt wird, nach der gesucht wird
Damit wurde der Fav.icon-Fehler behoben, der immer bei Application_Error ausgelöst wird
quelle
Es wurde festgestellt, dass in .Net Core das Problem durch Platzieren von favicon.ico in / lib anstelle von wwwroot behoben wird
quelle