Использование маршрутизации URL для веб-форм и StopRoutingHandler для Favicon

У меня есть веб-сайт, где я должен добавить 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.

9
задан Ben Hoffman 23 March 2010 в 04:57
поделиться

1 ответ

Я использовал это, и это сработало:

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, очистить историю и повторить попытку.

5
ответ дан 3 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

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