2013-01-18 54 views
0

我是一個基於表單的身份驗證模塊的工作MS SQL報告其在這裏描述的服務與特殊字符的工作:RedirectFromPage不要在RETURNURL

到目前爲止好,但我碰到這個問題。 我調用的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它的工作原理。

因此,我可以想象製造問題的唯一特殊字符是:字符。

任何想法如何使它工作,因爲報告服務與導航中的那些人一起工作了很多。

UPDATE

事實證明,我有我自己重定向這樣的:

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給我。

回答

2

我之前有過這個問題,但希望通過URL鏈接傳遞希伯來字符。

嘗試使用%3A轉換字符。

編輯

我用Google translate轉換的字符:只寫字符/字符串,可以直接翻譯和複製網址的相關部分。

+0

工作,迄今爲止感謝。但是這給我帶來了另一個問題來處理和解析returnUrl:S任何解決方案:)? – YvesR

+0

對不起,但我從來沒有處理過returnUrl情況:S –

+0

標記你的問題作爲答案,因爲它給我帶來了正確的做法。我踢了這些FormAuthentication的東西,手動完成。 Imho它在框架中是一個bug,它不會urlencode ReturnUrl。 – YvesR

0

Response.Redirect(HttpServerUtility.UrlEncode(Request.QueryString["ReturnUrl"]));

這是否對你的工作,替換字符,如問號(?),和號(&),斜槓(/)和空格。

http://msdn.microsoft.com/it-it/library/zttxte6w.aspx

+0

這個問題更是爲什麼默認的FormAuthentication不會urlencode並拋出一個異常。沒有辦法使用默認方法來處理這個問題:S – YvesR

+0

順便說一句,我不能再次對它進行urlen編碼,因爲報告服務對一些字符進行了編碼,但不是全部,再次執行會導致我擔心的混亂。 – YvesR

+0

你有沒有嘗試過Response.Redirect(HttpServerUtility.UrlEncode(Request.QueryString [「ReturnUrl」]))?作品? –