Я не уверен, что понял вопрос, но, насколько я знаю, вы можете просто предоставить регулярные выражения в словаре ограничений.
Я думаю, что есть даже пример для этого в MSDN refguide :
reportRoute.Constraints = new RouteValueDictionary {
{ "locale", "[a-z]{2}-[a-z]{2}" },
{ "year", @"\d{4}" } };
исходя из этого, я думаю, что вы должны написать:
Constraints = new RouteValueDictionary(new { filename = @"\d+" })