2014-10-16 51 views
0

兩件事;首先是我在最後一行不斷收到401例外。我曾認爲重新使用該會話將使我不僅不必重新發送憑證,而且還允許我通過URL訪問報告。它既不...我可以使用從SOAP API返回的SessionID並將其用於對SSRS的URL訪問調用嗎?

其次,如果我有它在用戶的瀏覽器中顯示它,我該怎麼做response

這是我有這麼遠,但我不確定哪裏去這個從這裏....

var rs = new ReportExecutionService.ReportExecutionService(); 
     rs.Credentials = new System.Net.NetworkCredential("UserID", "Pswd", "myDomain"); 

     var execInfo = rs.LoadReport("/Nav Reports/OpenSalesOrderByCustomer", null); 
     var format = "HTML4"; 

     string requestUri = string.Format(
     @"https://reports.myServer.com/ReportServer/?{0}&rs:SessionId={1}&rs:Format={2}", 
     execInfo.ReportPath, 
     execInfo.ExecutionID, 
     format 
    ); 
     WebRequest request = WebRequest.Create(requestUri); 
     request.UseDefaultCredentials = false; 
     request.Credentials = new System.Net.NetworkCredential("UserID", "Pswd", "myDomain"); 
     var response = request.GetResponse(); 

背景信息 - >
我試圖建立遠程報告與處理SSRS在我的asp.net web表單應用程序。我只是簡單地使用報表查看器控件,但它看起來很醜,並且不被我們的用戶羣所接受。 URL訪問返回一個更好看和格式化的報告,是可以接受的,但我必須通過安全證書。我會使用SOAP API,除了它會返回一個非風格的html blob,並且還會刪除我們想要使用的工具欄功能。

所以,我似乎還沒有找到一種方法來使用SOAP API來驗證會話,然後以某種方式使用它來使用URL訪問。

回答

0

只需調用SOAP API,獲取字節,然後將這些字節返回給具有適當標頭的內容類型:application/pdf,content-disposition:attachment; filename = report.pdf。您不需要對報表服務器執行多個調用。

+0

感謝您的回覆,我很感激。但是,我無法真正地做你提出的建議,因爲我(A)試圖將它作爲HTML返回,並且(B)我希望能夠訪問導出和打印的工具欄。 – 2014-10-16 18:12:53

+0

構建您自己的工具欄並從服務器更改您請求的類型 – 2014-10-16 18:53:12

+0

您是說不可能做我想問的問題,或者您認爲從頭開始重建它更簡單嗎? – 2014-10-16 18:56:55

相關問題