0

我无法从路由系统中排除不存在的文件。我在 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 条目?

4

2 回答 2

1

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

routes.Add(new Route("images/{resource}", new StopRoutingHandler())); 
于 2011-01-24T14:53:38.097 回答
0

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

做这个:

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

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

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

于 2010-07-02T01:24:43.360 回答