在ASP.NET中查找重定向的原因?

Lar*_*nal 5 asp.net web-config

我正在尝试在我的web.config中添加一个异常,以便一个页面不需要身份验证.但是,它仍然会重定向到登录页面.

问题不是如何设置web.config.为什么?我们的系统(无论好坏)除了web.config之外还有一堆检测.我们有global.asax和自定义HttpHandlers.代码库并不大,但重定向有很多潜在的原因.

我想知道的是如何最好地确定重定向的原因.有没有办法找出哪些代码触发了重定向?

Mar*_*ett 4

如果您可以调试应用程序,那么从global.asax 中的HttpApplication.BeginRequest开始并单步执行 System.Web 的参考源将是暴力方式。

或者,在 HttpResponse.Redirect(string, bool) 上设置断点并跟踪调用堆栈 - 我怀疑运行时是否有其他方法用于重定向请求。

如果这没有出现任何问题(或者您无法调试),并且由于暴力方法可能会导致大量代码 - 而且您的问题似乎与安全相关 - 您可能只需挂接 HttpApplication 即可。AuthenticateRequest 和 HttpApplication。AuthorizeRequest(及其关联的 Post* 事件)并查看那里的情况。

如果您使用表单身份验证,我碰巧知道 FormsAuthenticationModule 在 HttpApplication.EndRequest 中查找状态代码 401 来决定是否重定向请求。任何设置 401(访问被拒绝)的内容都会导致重定向,而不是返回到浏览器的 401。