跨目录的RedirectFromLoginPage问题

时间:2015-09-28 18:05:05

标签: c# asp.net redirect

我似乎面临一个相当奇怪的问题,RedirectFromLoginPage和跨文件夹的页面。

我的网站启用了“表单”身份验证,“表单”文件夹中的“登录”页面和“报告”文件夹中的其他aspx页面。 因此,要访问报告,您需要前往http://Servername/Reports/Report1.aspx,如果您尚未登录,则会被重定向到“登录”页面 - http://Servername/Forms/Login.aspx?ReturnUrl=../Reports/Report1.aspx,这似乎是正确的。

在我的登录页面上的aspx代码中,一旦我检查登录信息并创建Authcookie I然后检查我是否有ReturnUrl,如果我这样做,我使用 System.Web.Security.FormsAuthentication.RedirectFromLoginPage(username, false);用于重定向。

请注意“登录”页面的重定向网址 - http://Servername/Forms/Login.aspx?ReturnUrl=../Reports/Report1.aspx 似乎原则上是正确的,但是在登录重定向时永远不会发生,我甚至不确定发生了什么,它只是坐在那里然后在Chrome中得到“没有数据”--net :: ERR_EMPTY_RESPONSE。

但是,如果我尝试使用http://Servername/Forms/Login.aspx?ReturnUrl=/Reports/Report1.aspx,重定向会按预期发生,请注意区别为
ReturnUrl=/Reports/Report1.aspx与...有效 ReturnUrl=../Reports/Report1.aspx但不是,虽然前者不正确,后者从文件夹的角度来看是正确的。

我错过了一些非常简单的事情(重定向是不是从登录页面的上下文中发生的?),我可以通过删除前导“..”来介入并纠正问题,或者使用Respsone.Redirect(它可以正常工作)使用../Reports/Report1.aspx),但我希望框架能够进行适当的重定向,因为其余的东西都是由Forms Authentication处理的。

编辑1 - 我已经检查了IIS日志,我没有看到../Reports/Report1.aspx场景的重定向,这是有意义的,因为重定向永远不会发生。

1 个答案:

答案 0 :(得分:0)

道歉 - 我想这就是为什么人们需要知道一个人编写的代码! 我现在感觉很愚蠢,不是.Net Framework正在创建ReturnUrl字符串,我正在这样做,我在那里删除了额外的句号。

再次抱歉。

相关问题