Правильная обработка исключений с ASP.NET MVC, ELMAH и пользовательскими страницами ошибок - PullRequest
2 голосов
/ 21 августа 2009

рассмотрим следующую ситуацию:

Существует приложение ASP.NET MVC, которое использует ELMAH для централизованного ведения исключений. Контроллер помечается атрибутом HandlerError, чтобы перехватить определенный тип исключения, и предоставляет пользователю представление. Например

[HandleError(ExceptionType = typeof(ModelSpecificException), View = "Exceptions/ModelSpecific")]
public partial class HeavyController : Controller
{
  // Constructors and ActionResults are following here...
}

Это работает, как и ожидалось до сих пор. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что странице ошибки «ModelSpecific» нужны некоторые объекты в ViewData. Есть ли у кого-нибудь подсказка при заполнении словаря ViewData для ViewPage следующего типа

System.Web.Mvc.ViewPage<HandleErrorInfo>

Другая идея, которая приходит мне в голову, заключается в том, что, возможно, контроллер может использоваться для ErrorHandling с соответствующими ActionResults. Но в настоящее время я понятия не имею, как этого добиться.

Любая помощь очень ценится ...

С наилучшими пожеланиями,

Гордон

1 Ответ

0 голосов
/ 14 января 2010

Поскольку ваш класс исключений и представление зависят от модели, можете ли вы хранить дополнительные данные, которые вам нужны, в самом исключении?

if(badCondition)
{
    throw new ModelSpecificException("a bad thing happened", extraData);
}

По вашему мнению, вы можете получить исключение через Server.GetLastError (), а затем привести его к правильному типу, чтобы получить доступ к дополнительным данным через свойства. Это может быть более чистый подход, поскольку он рассматривает исключение как модель и не позволяет вам попадать в коллекцию ViewData.

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