httphandler重定向进入无限循环

时间:2013-05-03 23:47:42

标签: c# asp.net httphandler

我有一个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会再次被截获,这将进入无限循环。 任何想法如何才能阻止这种无限循环?感谢

1 个答案:

答案 0 :(得分:0)

你能想到的第一件事就是如何调用HttpHandler ..为什么它会检测查询字符串中的url?

除此之外,对您的问题有一个非常简单的解决方案(它确实是由查询字符串中的url引起的)。 而不是使用UrlEncode - 将字符串转换为Base64,登录URL将如下所示:

http://local.knowledge.scot.nhs.uk/Login.aspx?retUrl=aHR0cDovL2xvY2FsLmtub3dsZWRnZS5zY290Lm5ocy51ay9jYWxkZXJkYWxlLzEucGRm

有关如何对字符串64进行编码和解码的更多信息:http://blogs.microsoft.co.il/blogs/mneiter/archive/2009/03/22/how-to-encoding-and-decoding-base64-strings-in-c.aspx