【发布时间】:2013-05-03 23:47:42
【问题描述】:
我有一个 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
}
例如初始请求是针对“http://local.knowledge.scot.nhs.uk/calderdale/1.pdf”的 并且返回 url 变为“http://local.knowledge.scot.nhs.uk/Login.aspx?retUrl=http://local.knowledge.scot.nhs.uk/calderdale/1.pdf”
由于返回 url 还包含“calderdale/1.pdf”,因此该 url 再次被截获并进入无限循环。 任何想法我们如何才能阻止这种无限循环?谢谢
【问题讨论】:
-
你不能检测 url 是否包含 ~/Login.aspx 并在那个时候打破循环吗?
-
根据您的描述,听起来您只是在字符串中搜索地址。相反,您应该尝试将字符串解析为 URI,并且只检查路径部分。
-
尝试从重定向 URL 中删除最后一个字符,看看它是否循环。也就是说,确认您正在返回处理程序,因为文件类型似乎是“.pdf”。
-
我的回答有帮助吗?如果是这样,请接受它,以便其他人也可以使用它。如果不是,您是否找到了解决问题的其他方法?
标签: c# asp.net httphandler