我有一个庞大的后端网站。在某处,某种程度上,在尝试打开站点时调用了Response.Redirect(调试环境)。
有没有办法找出哪个,哪个Response.Redirect会导致重定向?
某种方法是在整个网站的每个Response.Redirect上设置调试断点。但这需要付出很多努力。
我的另一个想法是使用“Debug-> Exceptions ..”来停止“ThreadAbortException”(由Response.Redirect抛出)。但这不起作用。看起来像框架或任何不再执行的东西来中断它。
最后一次尝试是观看调用堆栈。但堆栈永远不会到达最后一个Response.Redirect,因为它是一个新的帧调用。
答案 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)