Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为Web表单使用URL路由和为Favicon使用StopRoutingHandler_C#_Asp.net_Routing - Fatal编程技术网

C# 为Web表单使用URL路由和为Favicon使用StopRoutingHandler

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()))

我有一个网站,我需要添加一个Favicon.ico。该网站是使用ASP.NET 3.5 Web表单和路由编写的。问题是Favicon链接总是返回一个页面未找到错误。这是因为路由不知道Favicon.ico的链接应该去哪里,所以它返回未找到的页面

我曾尝试为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" />

不幸的是,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()));