C# 为Web表单使用URL路由和为Favicon使用StopRoutingHandler
我有一个网站,我需要添加一个Favicon.ico。该网站是使用ASP.NET 3.5 Web表单和路由编写的。问题是Favicon链接总是返回一个页面未找到错误。这是因为路由不知道Favicon.ico的链接应该去哪里,所以它返回未找到的页面 我曾尝试为favicon添加一个停止路线控制器,但它们似乎都不起作用。以下是我迄今为止尝试过的方法:C# 为Web表单使用URL路由和为Favicon使用StopRoutingHandler,c#,asp.net,routing,C#,Asp.net,Routing,我有一个网站,我需要添加一个Favicon.ico。该网站是使用ASP.NET 3.5 Web表单和路由编写的。问题是Favicon链接总是返回一个页面未找到错误。这是因为路由不知道Favicon.ico的链接应该去哪里,所以它返回未找到的页面 我曾尝试为favicon添加一个停止路线控制器,但它们似乎都不起作用。以下是我迄今为止尝试过的方法: routes.Add(new Route("MasterPages/{favicon}.ico", new StopRoutingHandler()))
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" />
不幸的是,IgnoreRoute不适用于路由Web表单,因为它不是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,清除历史记录,然后再试一次。这也有帮助;
routes.Add(new Route("favicon.ico", new StopRoutingHandler()));