我似乎面临一个相当奇怪的问题,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
场景的重定向,这是有意义的,因为重定向永远不会发生。
答案 0 :(得分:0)
道歉 - 我想这就是为什么人们需要知道一个人编写的代码! 我现在感觉很愚蠢,不是.Net Framework正在创建ReturnUrl字符串,我正在这样做,我在那里删除了额外的句号。
再次抱歉。