У меня есть веб-сайт, где я должен добавить Favicon.ico. Сайт записан с помощью ASP.NET 3.5 Веб-формы с Маршрутизацией. Проблема - то, что ссылка Favicon всегда возвращает ошибку "Страница не найдена". Это вызвано тем, что Маршрутизация не знает, куда ссылка для Favicon.ico должна перейти в так, это возвращает страницу Not Found.
Я попытался добавить StopRoutingHandler для favicon, но ни один из них, кажется, не работает. Ниже те, я попробовал до сих пор:
routes.Add(new Route("MasterPages/{favicon}.ico", new StopRoutingHandler()));
routes.Add(new Route("{favicon}.ico", new StopRoutingHandler()));
routes.Add(new Route("favicon.ico", new StopRoutingHandler()));
routes.Add(new Route("favicon.ico/{*pathInfo}", new StopRoutingHandler()));
Кто-либо знает то, что я должен использовать? Мои ссылки favicon.ico, которые я попробовал, похожи на это:
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
И они в моем <html><head>
теги.
Кроме того, как одно заключительное примечание, я не использую MVC, потому что, если я был, я мог бы использовать это:
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
К сожалению, IgnoreRoute не работает на Маршрутизацию Веб-форм хотя, потому что это не приложение MVC.
Я использовал это, и это сработало:
routes.Add(new Route("favicon.ico", new StaticFileRouteHandler("~/favicon.ico")));
public class StaticFileRouteHandler : IRouteHandler
{
public string VirtualPath { get; set; }
public StaticFileRouteHandler(string virtualPath)
{
VirtualPath = virtualPath;
}
public System.Web.IHttpHandler GetHttpHandler(RequestContext requestContext)
{
HttpContext.Current.RewritePath(VirtualPath);
return new DefaultHttpHandler();
}
}
По-видимому, это тоже работает:
routes.Add(new Route("favicon.ico", new StopRoutingHandler()));
Мне просто нужно было закрыть Firefox, очистить историю и повторить попытку.