Asp.net mvc 3 mvc3:确定url是否会导致控制器的执行

Asp.net mvc 3 mvc3:确定url是否会导致控制器的执行,asp.net-mvc-3,routes,Asp.net Mvc 3,Routes,我正在global.asax应用程序\u AcquisiteRequestState事件中执行一些作业,并且我只希望在当前url(HttpContext.current.Request.url)与任何注册路由匹配时执行该作业 事实上,我不想为图像、JavaScript或任何其他文件上的请求执行代码 所以问题是:有没有一种简单的方法可以根据routes集合测试给定的url,只知道它是否匹配任何路由。我不需要知道它匹配哪条路线,只要一个对或错就行了 编辑 来自archil的答案是可行的,但几乎所有的

我正在global.asax
应用程序\u AcquisiteRequestState
事件中执行一些作业,并且我只希望在当前url(
HttpContext.current.Request.url
)与任何注册路由匹配时执行该作业

事实上,我不想为图像、JavaScript或任何其他文件上的请求执行代码

所以问题是:有没有一种简单的方法可以根据routes集合测试给定的url,只知道它是否匹配任何路由。我不需要知道它匹配哪条路线,只要一个对或错就行了

编辑
来自archil的答案是可行的,但几乎所有的url都与路由匹配。这使我意识到我的问题是不正确的。如果知道给定的url是否会以某种方式导致控制器的执行,我想要的是什么。/Content/site.css上的请求可能与路由匹配,但不会执行控制器。

类似于这些内容的内容

void Application_AcquireRequestState(Object sender, EventArgs e)
{
    var httpContextWrapper = new System.Web.HttpContextWrapper(Context);
    bool isMatch = false;

    foreach (var item in RouteTable.Routes)
    {
        if (item.GetRouteData(httpContextWrapper) != null)
        {
            isMatch = true;
            break;
        }
    }
}
来自RouteBase.GetRouteData摘要

//     An object that contains the values from the route definition if the route
//     matches the current request, or null if the route does not match the request.
public abstract RouteData GetRouteData(HttpContextBase httpContext);
更新:

为了按路由处理程序(即,将由mvc框架处理的URL,而不是对应于css和js文件的URL)进行过滤,我添加了检查
RouteData.RouteHandler

void Application_AcquireRequestState(Object sender, EventArgs e)
{
    var httpContextWrapper = new System.Web.HttpContextWrapper(Context);
    bool isMatch = false;

    foreach (var item in RouteTable.Routes)
    {
        RouteData routeData = null;
        if ((routeData = item.GetRouteData(httpContextWrapper)) != null && routeData.RouteHandler.GetType().Equals(typeof(MvcRouteHandler)))
        {
            isMatch = true;
            break;
        }
    }
}

我终于发现了一些有用的东西:

  private static bool IsRoutedRequest()
  {
     IHttpHandler handler = HttpContext.Current.Handler;
     return handler != null && handler is MvcHandler;
  }

您的代码似乎工作得很好,但通过尝试,我意识到这不是我所需要的。我的目标是只处理将由控制器处理的whit URL。reqest“”与规则匹配,但不会实例化控制器。我会更新我的问题。