.Net Application_Error
В Global.asax у меня есть код в обработчике Application_Error, который хранит сообщение об ошибке в HttpRuntime.Cache, регистрирует ошибку в файле журнала приложения и затем передает пользователя на страницу Error.aspx для отображения сообщения в шаблоне / теме веб-сайта. (получая его из HttpRuntime.Cache).
Я хочу знать, есть ли хороший способ управления контентом HttpRuntime.Cache.
В настоящее время я устанавливаю значение HttpRuntime.Cache с ключом, который определен в глобально доступном файле констант, а затем явно удаляю его в коде Error.aspx.
Есть ли более разумный способ обеспечить правильную очистку HttpRuntime.Cache после завершения обработки ошибок?
Абстрагироваться от контекста:
MethodA устанавливает некоторые значения в центральном хранилище. Элемент управления передается в MethodB, который использует значения из центрального хранилища. Только после успешного считывания значений MethodB должен очистить значения из хранилища.
Ограничение: управление не может быть возвращено методу А. Как только MethodB завершен, программа заканчивается.
1 ответ
ИМХО ты на правильном пути.
В прошлом я использовал DTO (Data Transfer Object, облегченный объект данных), который используется для хранения информации об исключениях и хранится в Session. Код, который перехватывает ошибку и вызывает перенаправление на страницу ошибки, также устанавливает в DTO флаг, указывающий, можно ли исправить ошибку, и если это так, он также сохраняет URL-адрес в DTO - это означает, что страница ошибки может отобразить ссылку, по которой пользователь может щелкнуть, чтобы вернуться туда, где они были прерваны (вы контролируете ссылку и все, что находится на ее конце, так что вы можете отправить их обратно туда, куда вам нравится в вашем приложении, или воссоздать страницы столько, сколько вам нравится, чтобы они продолжались).
Помните, что кэш-память является глобальной, поэтому возможно, что вы можете перезаписать информацию об исключениях одного пользователя другим пользователем.