Я нашел огромное количество информации (например, this ) о том, как обрабатывать неожиданные ошибки в ASP.NET, используя Методы Page_Error и Application_Error, а также директива customErrors в Web.config.
Однако мой вопрос в том, как лучше всего обрабатывать ОЖИДАЕМЫЕ ошибки. Например, у меня есть страница для отображения записи. Каждая запись имеет определенный список пользователей, которым разрешено ее просматривать. Поскольку у многих пользователей может быть роль «Просмотр записей», которых нет в указанном списке, мне нужно написать код на странице для их фильтрации.
protected void Page_Load(object sender, EventArgs e)
{
var user = Membership.GetUser();
if (!CanUserViewThisRecord(Request["id"], user.Username)
{
// Display an error to the user that says,
// "You are not allowed to view this message", and quit.
}
else
{
// Display the page.
}
}
Каковы наилучшие методы обработки ошибок такого рода? Я могу придумать несколько возможностей:
Это похоже на простой вопрос, и за это я прошу прощения, но почти все, что я нашел, было в отношении неожиданных исключений. Дело не в том, что какие-либо из перечисленных выше возможностей трудно реализовать, но я бы хотел использовать стандартный рекомендуемый метод, если это возможно.
ПРИМЕЧАНИЕ: Спасибо всем за ответы. Я хочу уточнить, что пользователи НЕ будут иметь возможность нажимать ссылки на записи, которые им разрешено просматривать. Этот вопрос больше в интересах защиты. Например, поскольку идентификатор записи находится в URL-адресе, кто-то потенциально может ввести идентификатор запрещенной записи в адресную строку. Или пользователь A, которому разрешено, может отправить ссылку по электронной почте пользователю B, которому нет. Кажется, я неправильно использую слова «исключение» и «ошибка», но, надеюсь, этот сценарий имеет смысл.