首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ASP.NET中找到重定向的原因?

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

Stack Overflow用户
提问于 2008-11-18 18:36:08
回答 6查看 1.7K关注 0票数 6

我试图在我的web.config中添加一个异常,这样一个页面就不需要身份验证了。但是,它仍然重定向到登录页面。

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

我想知道的是如何最好地确定重定向的原因。有什么方法可以找出是什么代码触发了重定向?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-11-18 19:39:45

如果您可以调试应用程序,从HttpApplication.BeginRequest开始使用global.asax和逐步遍历System.Web的引用源将是一种蛮力的方式。

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

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

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

票数 4
EN

Stack Overflow用户

发布于 2008-11-18 19:15:57

当向需要身份验证的asp.net页面发出请求时,asp.net将重定向到指定的登录页,默认情况下提供标识原始请求页的ReturnUrl querystring参数。虽然这个ReturnUrl是可配置的,但是如果您没有修改配置,它的存在应该表明身份验证失败了。

在这种情况下,您应该专注于对页面的身份验证设置进行故障排除。戈登·贝尔的回答看起来不错。

代码语言:javascript
运行
复制
<system.web>
...
</system.web>

<location path="NoAuthNeeded.aspx">
    <system.web>
        <authorization>
        <allow roles="*" />
        <allow roles="?" />
        </authorization>
    </system.web>
</location>
票数 1
EN

Stack Overflow用户

发布于 2008-11-18 19:49:15

另外,如果这只发生在您的生产应用程序中,您可能会发现使用WinDBG发生了什么。松散地遵循这篇文章,您将执行以下操作:

  • 启动WinDBG并附加到w3wp进程
  • WinDBG将断点,而加载SOS模块的.loadby sos mscorwks也会断点
  • 在CLR异常上键入sxe clr到断点
  • 输入g继续

现在,您的应用程序将在任何例外情况下崩溃。由于Response.Redirect通常抛出一个ThreadAbortException,这可能是一种简单的中断方式。然后执行一个!printexception来获取堆栈跟踪。如果我的~*e!clrstack foo没有让我看到当前正在执行的所有线程的托管堆栈,也可以执行WinDBG。

请注意,当您被破坏时,您冻结了w3wp进程,所以要快速!

希望您可以使用另一种方法,但是如果其他方法都失败了,这可能会帮助您开始工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/299695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档