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