ASP.NET路由ignoreRoute不起作用

时间:2010-07-02 00:37:36

标签: asp.net routing ignoreroute

我无法从路由系统中排除不存在的文件。我正在Web窗体方案中处理此代码:

public static void RegisterRoutes(RouteCollection routes)
{   
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  routes.IgnoreRoute("{resource}.gif/{*pathInfo}");
  routes.IgnoreRoute("{resource}.jpg/{*pathInfo}");   
  Route r = new Route("{*url}", new MyRouteHandler());
  routes.Add(r);
}

我调试时

public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
    string path;

    IHttpHandler page;

    try
    {
        path = requestContext.RouteData.GetRequiredString("url");
        LogFile(requestContext, path);
    }

路径仍包含不存在的gif文件,jpg等 我希望排除所有具有扩展名的文件(如果可能的话)

上面的代码有问题吗?订单是否正确,即在向RouteCollections添加路由之前添加routes.IgnoreRoute条目?

2 个答案:

答案 0 :(得分:1)

在Web窗体中,您可以使用StopRoutingHandler。在以下示例中,将忽略/ images文件夹中的文件(例如http://yoursite.com/images/xyz.jpg

)的路由
routes.Add(new Route("images/{resource}", new StopRoutingHandler())); 

答案 1 :(得分:0)

IgnoreRoute是ASP.NET MVC的扩展方法(System.Web.Mvc) - 在Web窗体中不起作用。

这样做:

routes.Add(new Route("{resource}.gif/{*pathInfo}", new MyIgnoreHandler()));

将您的其他路线映射到常规处理程序。

您应该从此问题中删除“mvc”标记。