Я думаю, что вы можете запустить этот код: this.Context.Handler is MvcHandler
в Application_EndRequest в Global.asax.
Если вы хотите пройтись по маршрутам, вы можете сделать что-то вроде этого:
if(this.Context.Handler == null)
{
foreach (var route in RouteTable.Routes)
{
var foundRoute = route.GetRouteData(new HttpContextWrapper(Context));
if(foundRoute==null)
continue;
if(foundRoute.RouteHandler is MvcRouteHandler)
{
// code
break;
}
}
}
если я правильно помню, foundRoute будет NULL, если он не соответствует контексту, но вы должны запустить этот код и проверить его.
FYI В игнорируемых маршрутах реализован StopRouteHandler. MvcRoutees реализует MvcRouteHandler. Есть несколько других обработчиков, таких как PageRouteHandler и ResourceRouteHandler.
Обновление:
Кстати, я бы добавил хеш или какой-то другой метод кэширования, если вы планируете использовать этот поиск, чтобы не выполнять итерации по маршрутам каждый раз.