Что устанавливает значение параметра по умолчанию для этого метода действия MVC3? - PullRequest
0 голосов
/ 08 марта 2012

У моего приложения MVC 3 в .NET 4.0 есть ErrorController с действием, которое начинается следующим образом:

public ActionResult Index(Exception error, int? functionId, string viewMessage)
{
   if (error == null && string.IsNullOrEmpty(viewMessage))
      return RedirectPermanent(_DefaultErrorHtm);
   // ...
}

Я не настраиваю никакие пользовательские маршруты для этого действия, но когда я запрашиваю "http://localhost/error", параметр error не null, но всегда System.Exception без трассировки стека. Что обеспечивает это значение по умолчанию, MVC 3 или .NET 4.0? Как я могу предотвратить это?

Предполагаемое использованиедля этого действия, что мой пользовательский обработчик ошибок заменяет словарь маршрутов, устанавливает контроллер на «Ошибка» и действие на «Индекс» и предоставляет правильные параметры, и вызывает ErrorController.Execute. Есть ли лучший способ запретить пользователюзапросить этот маршрут напрямую? ChildActionOnlyAttribute не работает, потому что замена словаря маршрутов и повторное выполнение элемента управления делает это родительским действием.

ОБНОВЛЕНИЕ: Я боролся с этим, создавая пользовательскийМаршрут, который предоставляет исключение по умолчанию, для которого тестирует мое приложение, а не тестирование на ноль. Это заставляет меня подозревать, что именно MVC 3 поставил System.Exception для начала.

1 Ответ

1 голос
/ 08 марта 2012

По второму вопросу: поставьте ChildActionOnlyAttribute поверх этого действия - вы не сможете запросить его из браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...