Сам нашел ответ.
Ричард Дингволл имеет отличную статью про различные стратегии. Мне особенно нравится решение FilterAttribute. Я не фанат бросать исключения вокруг Willy Nilly, поэтому я посмотрю, смогу ли я улучшить это:)
Для global.asax просто добавьте этот код в качестве вашего последнего маршрута для регистрации:
routes.MapRoute(
"404-PageNotFound",
"{*url}",
new { controller = "StaticContent", action = "PageNotFound" }
);