Если вы посмотрите на код, который выдает исключение: это происходит потому, что модуль WebPageHttpModule подключил обработчик PostResolveRequestCache, который пытается разрешить маршрут.Затем он обнаруживает неверный путь и barfs.
Возможно, если вы сможете зарегистрировать свой собственный IHttpModule до WebPageHttpModule, вы можете выполнить запрос до того, как это сделает обработчик PostResolveRequestCache по умолчанию.
Еще один вариантможет быть, подключиться к событию Application_Error, а затем исследовать исключение и вернуть 404, если это необходимо.