【发布时间】:2010-10-10 07:05:54
【问题描述】:
这个问题与Handle URI hacking gracefully in ASP.NET 有点相关,因为它也是关于如何最好地处理在 ASP.NET 请求生命周期中发生的异常。我找到了一种优雅地处理大多数异常的方法,但后来我发现一些异常在请求中发生得太晚了,以至于无法执行Server.Transfer 之类的操作来将整个错误表示逻辑划分到它自己的页面中。
所以,我必须改为处理 Application_Error 事件中的异常,然后执行 Response.Writes 之类的。它很丑。我知道在某些情况下响应流可能已经被刷新,因此传输请求并不是一个真正的选择。我想问的是,是否有人找到了解决这个问题的优雅方法?
此外,我发现很难知道何时可以通过将请求转移到另一个页面而不是正常地处理异常。当异常发生时,找出我们在请求生命周期中的哪个位置的最佳方法是什么?如果它发生在页面的加载和呈现期间,Page_Error 将能够处理它,而我在处理Server.Transfer 时还没有遇到问题。但是,如果异常发生得太早或太晚,Page_Error 无法捕获它并冒泡到Application_Error,我该怎么做才能知道它是早还是晚?
如果在生命周期的后期,我可能不得不直接从Application_Error 执行Response.Write,但如果它是早期的,我可以执行Server.Transfer。问题是尝试执行Server.Transfer 本身会导致异常,如果它太在请求中执行它。
那么,是否有一个全局枚举或类似的东西可以表明现在是否为时已晚对响应进行创造性的处理?
【问题讨论】:
标签: asp.net exception-handling error-handling lifecycle