0

在 Global.asax 中,我在 Application_Error 处理程序中有代码,它将错误消息存储在 HttpRuntime.Cache 中,将错误记录到应用程序日志文件中,然后将用户转移到 Error.aspx 页面以在网站模板/主题中显示消息(通过从 HttpRuntime.Cache 中检索它)。

我想知道是否有管理 HttpRuntime.Cache 内容的好方法。

目前,我正在使用全局可用的常量文件中定义的键设置 HttpRuntime.Cache 值,然后在后面的 Error.aspx 代码中显式删除它。

一旦错误处理完成,是否有更聪明的方法来确保正确清理 HttpRuntime.Cache ?

从上下文中抽象:

MethodA 在中央存储位置设置一些值 控制转移到 MethodB 使用中央存储中的值 只有在成功读取值后,MethodB 才应从存储中清除值

限制:不能将控制权交还给 MethodA。MethodB 完成后,程序结束。

4

1 回答 1

0

恕我直言,您走在正确的轨道上。

我过去做的是有一个DTO(Data Transfer Object,一种轻量级的数据对象),用来保存异常信息,存放在Session中。捕获错误并强制重定向到错误页面的代码还在 DTO 中设置一个标志来说明错误是否可恢复,如果是,它还会在 DTO 中存储一个 URL - 这意味着错误页面可以呈现一个链接供用户单击以返回他们被中断的位置(您可以控制链接以及链接末尾的任何内容,因此您可以将它们发送回应用程序中您喜欢的任何位置,或重新创建一个页面尽可能多地让他们继续)。

请记住,缓存是全局的,因此您可以用另一个用户的异常信息覆盖一个用户的异常信息。

于 2011-09-20T03:25:15.400 回答