我有一个httphandler,它拦截名为“calderdale”的文件夹中存在的任何pdf文件请求,并将用户重定向到登录页面。这就是我重定向的方式
if (memberLoginName == "UNKNOWN" && !isDomainFallthrough)
{
// Check if the user is logged in, if not redirect to Login page.
context.Response.Redirect("~/Login.aspx?retUrl=" + HttpUtility.UrlEncode(context.Request.Url.ToString()));
}
else
{
// download file
}
e.g。最初的请求是针对“http://local.knowledge.scot.nhs.uk/calderdale/1.pdf” 并且返回网址变为“http://local.knowledge.scot.nhs.uk/Login.aspx?retUrl=http://local.knowledge.scot.nhs.uk/calderdale/1.pdf”
因为返回URL还包含“calderdale / 1.pdf”,这个url会再次被截获,这将进入无限循环。 任何想法如何才能阻止这种无限循环?感谢
答案 0 :(得分:0)
你能想到的第一件事就是如何调用HttpHandler ..为什么它会检测查询字符串中的url?
除此之外,对您的问题有一个非常简单的解决方案(它确实是由查询字符串中的url引起的)。 而不是使用UrlEncode - 将字符串转换为Base64,登录URL将如下所示:
有关如何对字符串64进行编码和解码的更多信息:http://blogs.microsoft.co.il/blogs/mneiter/archive/2009/03/22/how-to-encoding-and-decoding-base64-strings-in-c.aspx