ASP.NET找出哪个Response.Redirect重定向?

时间:2015-06-23 10:02:44

标签: c# asp.net

我有一个庞大的后端网站。在某处,某种程度上,在尝试打开站点时调用了Response.Redirect(调试环境)。

有没有办法找出哪个,哪个Response.Redirect会导致重定向?

某种方法是在整个网站的每个Response.Redirect上设置调试断点。但这需要付出很多努力。

我的另一个想法是使用“Debug-> Exceptions ..”来停止“ThreadAbortException”(由Response.Redirect抛出)。但这不起作用。看起来像框架或任何不再执行的东西来中断它。

最后一次尝试是观看调用堆栈。但堆栈永远不会到达最后一个Response.Redirect,因为它是一个新的帧调用。

5 个答案:

答案 0 :(得分:1)

好吧,我有一个想法解决了我的问题,但需要大量的代码替换(这不是问题'查找和替换')。

我创建了一个静态类:

public static class OwnResponse
{
    public static void Redirect(string Url, bool EndResponse = true)
    {
        HttpContext.Current.Response.Redirect(Url, EndResponse); // set the breakpoint here
    }
}

然后我用OwnResponse.Redirect替换了代码中的每个Response.Redirect。现在我可以将断点设置在类的第一行。我打电话给网站,断点受到了打击。然后我只是看了调用堆栈并知道重定向发生的位置。

还有另一种可能的解决方案,需要更多的工作。你必须得到"踏入.NET代码"跑步。然后,您可以在.NET方法的第一行中轻松设置断点。

答案 1 :(得分:0)

您可以在着陆页中使用以下代码: -

string yourPreviousUrl = Request.UrlReferrer.ToString();

if(!string.IsNullOrEmpty(yourPreviousUrl))
{
    //Referrer was found!
}
else
{
    //Unable to detect a Referrer
}

如官方网站所述: -

HttpRequest.UrlReferrer Property

  

获取有关客户端先前请求的URL的信息   链接到当前网址。

答案 2 :(得分:0)

您可以尝试实施跟踪并将结果保存到文件中。跟踪数据可以帮助您确定重定向。

这是一个关于ASP.NET跟踪的更多背景知识的链接:

http://www.codeproject.com/Articles/82290/Step-by-Step-Guide-to-Trace-the-ASP-NET-Applicatio

答案 3 :(得分:0)

使用fiddler或其他http流量捕获工具捕获网络流量。您应该能够看到已启动的请求并从那里获取。

答案 4 :(得分:0)

打开异常设置窗口并搜索“threadabort”。选中 ThreadAbortException 的复选框。现在,当从代码执行重定向时,您的调试会话将进入中断模式。

Exception Settings