在Global.asax中,我在Application_Error处理程序中有代码,它将错误消息存储在HttpRuntime.Cache中,将错误记录到应用程序日志文件中,然后将用户转移到Error.aspx页面以在网站中显示消息模板/主题(通过从HttpRuntime.Cache中检索它)。
我想知道的是,是否有一种管理HttpRuntime.Cache内容的好方法。
目前,我正在使用在全局可用的Constants文件中定义的键设置HttpRuntime.Cache值,然后在后面的Error.aspx代码中显式删除它。
有一种更聪明的方法可以确保在错误处理完成后正确清理HttpRuntime.Cache吗?
从上下文中抽象出来:
MethodA在中央存储位置设置一些值 控制转移到MethodB,后者使用中央存储的值 只有在成功读取值后,MethodB才能清除存储中的值
限制:无法将控制权交还给MethodA。一旦MethodB完成,程序就结束了。
答案 0 :(得分:0)
恕我直言,你走在正确的轨道上。
我过去所做的是拥有一个DTO(数据传输对象,一个轻量级数据对象),用于保存异常信息并存储在Session中。捕获错误并强制重定向到错误页面的代码也在DTO中设置一个标志来说明错误是否可以恢复,如果是,它还在DTO中存储了一个URL - 这意味着错误页面可以呈现出一个链接供用户单击以返回到他们被中断的位置(您可以控制链接,以及其末尾的任何内容,因此您可以将它们发送回应用程序中的任何内容,或重新创建页面尽可能多地让他们继续)。
请记住,缓存是全局的,因此您可以用另一个用户覆盖一个用户的异常信息。