Я нашел огромное количество информации (например, 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.
}
}
Каковы оптимальные методы для обработки такого родаошибка?Я могу представить несколько вариантов:
- Перенаправление на страницу с ошибкой.
- Поместите на каждую страницу ярлык с именем "lblErrorText".Оставьте это поле пустым, если нет ошибки.
- Создайте исключение и позвольте стандартной обработке ошибок справиться с ним.
Это похоже на основной вопрос, и я прошу прощения, нопочти все, что я обнаружил, касалось неожиданных исключений.Дело не в том, что какие-либо из перечисленных выше возможностей сложно реализовать, но я бы хотел использовать стандартный рекомендуемый метод, если это возможно.
ПРИМЕЧАНИЕ: Спасибо всем за ответы.Я хочу уточнить, что пользователи НЕ смогут нажимать ссылки на записи, которые им разрешено просматривать.Этот вопрос больше отвечает интересам защиты.Например, поскольку идентификатор записи находится в URL, кто-то может ввести идентификатор запрещенной записи в адресную строку.Либо пользователь А, которому разрешено, может отправить по электронной почте ссылку на пользователя Б, которого нет.Возможно, я не правильно использую слова «исключение» и «ошибка», но, надеюсь, сценарий имеет смысл.