Обработка ошибок ASP.NET - не обнаружен правильный тип ошибки в Global.asax - PullRequest
1 голос
/ 15 октября 2011

У меня есть несколько пользовательских классов ошибок, каждый со своей функциональностью (не показана):

Exceptions.cs

public abstract class MyAppException : Exception {
  //...
}
public class ValidationException : MyAppException {
  //...
}
public class AccessDeniedException : MyAppException {
  //...
}

Теперь в коде за пустой страницей у меня есть:

test.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
  throw new AccessDeniedException();
}

Мое намерение состоит в том, чтобы поймать это на уровне приложения:

Global.asax.cs

protected void Application_Error(object sender, EventArgs e) {
  var exc = Server.GetLastError();
  if (exc is MyAppException) ((MyAppException)exc).Log();
}

Но, добавив точку останова, я нахожу, что exc is MyAppException оценивается как false.

Куда я иду не так?

1 Ответ

2 голосов
/ 15 октября 2011

Попробуйте InnerException:

if (exc.InnerException is MyAppException)

Это метод System.Web.UI.Page.HandleError, который превращает фактическое исключение в HttpUnhandledException.

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