我正在为 MS SQL 报告服务开发一个基于表单的身份验证模块,如下所述:
到目前为止一切顺利,但我遇到了这个问题。我调用的 URL 重定向到登录页面进行身份验证,然后页面重定向回返回 url。
URL 示例调用:
http://thor/ReportServer/Pages/ReportViewer.aspx?%2fSampleUserReport&rs:Command=Render
此行崩溃:
FormsAuthentication.RedirectFromLoginPage(m_username, false);
例外:
System.Web.HttpException: Der für die Umleitung von Anforderungen angegebene Rückgabe-URL ist ungültig.
bei System.Web.Security.FormsAuthentication.GetReturnUrl(Boolean useDefaultIfAbsent)
bei System.Web.Security.FormsAuthentication.GetRedirectUrl(String userName, Boolean createPersistentCookie)
bei TQsoft.Windows.Products.SSRS.Authentication.Logon.ServerBtnLogon_Click(Object sender, EventArgs e)
因此,在调查和调试之后,我发现我跳过&rs:Command=Render
它是否有效。
所以我能想象到的唯一特殊字符就是:
字符。
任何想法如何使它工作,因为报告服务正在与导航中的那些工作很多。
更新
事实证明,我必须像这样重定向自己:
Response.Redirect(Request.QueryString["ReturnUrl"].Replace(":","%3A"));
Context.ApplicationInstance.CompleteRequest();
但这引发了另一个异常:
System.Threading.ThreadAbortException: Der Thread wurde abgebrochen.
bei System.Threading.Thread.AbortInternal()
bei System.Threading.Thread.Abort(Object stateInfo)
bei System.Web.HttpResponse.End()
bei System.Web.HttpResponse.Redirect(String url, Boolean endResponse)
bei System.Web.HttpResponse.Redirect(String url)
bei TQsoft.Windows.Products.SSRS.Authentication.Logon.ServerBtnLogon_Click(Object sender, EventArgs e)
我真的是asp.net 上的菜鸟,但是当RoR 赢得我的atm 时开始讨厌它。