Я все еще не совсем уверен, почему я видел поведение выше, поэтому, если кто-то хочет присоединиться к своим идеям, не стесняйтесь.
Тем не менее, если кто-то другой столкнется с той же проблемой, я былпреодолеть его, изменив порядок маршрутов, добавив сначала более неоднозначный маршрут по умолчанию с ограничением NotEqual, чтобы гарантировать, что маршрут DynamicContent был выбран по мере необходимости.
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Account", action = "Index", id = UrlParameter.Optional },
new { controller = new NotEqual("DynamicContent") }
);
routes.MapRoute(
"Branding",
"foo/bar.css",
new { controller = "DynamicContent", action = "CSS" }
);
Для тех, кому интересно, что такое NotEqualЯ нашел это в блоге .
public class NotEqual : IRouteConstraint
{
private string _match = string.Empty;
public NotEqual(string match)
{
_match = match;
}
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return String.Compare(values[parameterName].ToString(), _match, true) != 0;
}
}
Я, конечно, слышу о лучших способах сделать это ИЛИ, почему мой оригинальный код не работал полностью.