0

有没有人知道 HTTP 状态代码(200、404、500 等)在 IIS 管道中的首次可用位置?我正在尝试为错误处理目的编写一系列 http 模块和处理程序,并且我不想特别想复制请求/响应来获取值。

4

1 回答 1

0

看看这里的任何事件,然后选择:)

http://msdn.microsoft.com/en-us/library/ms693685(v=vs.90).aspx

理论上,状态码可以被管道中的任何一个http模块改变;它只取决于他们订阅了哪些事件。

例如,授权模块可以订阅该OnAuthorizeRequest方法,并在那时执行其逻辑,并在需要时更改状态码。在另一种情况下,经典的 ASP 应用程序可能作为处理程序运行,您将无法确定状态代码是否为 500,直到OnPostExecuteRequestHandler. 最后,日志模块中的错误可能会生成 500,直到请求处理几乎完成时才会发生 ( OnLogRequest)

更复杂的是,一些处理程序可能会在执行期间吐出未缓冲的数据,因此它可能出现在任何OnSendResponse事件中,这些事件没有任何特定的顺序,并且状态代码可能在响应之间发生了变化。

所以,这真的取决于你想要达到什么目的才能有效地解决这个问题。如果你能提供更多细节,也许我们可以制定一个解决方案。

于 2012-08-23T08:50:19.280 回答