2013-04-04 51 views
3

我試圖訪問像下面如何通過憑據時訪問SSRS通過URL

http://MyServerIP/ReportServer?/FolderName/ReportName&Param1=ParamValue&rs:Command=Render&rs:Format=HTML4.0&rc:Toolbar=false 

當我嘗試訪問上述網址,使用URL中的SSRS報告中彙報,我問我的網絡憑據,給予其我獲得了在瀏覽器窗口中呈現的所有SSRS報告頁面。

現在我想在我的webApp中的彈出窗口中顯示這些內容。爲此,我嘗試了一個jQuery請求並獲取內容,但是這樣做會導致401未經授權的錯誤。所以我想知道是否有一種方法來發送憑據在jquery ajax中獲取請求。

作爲週轉我用下面的C#代碼檢索數據試過了,但它並沒有任何幫助,給了相同的401錯誤

WebClient client = new WebClient(); 
client.Credentials = new NetworkCredential("username", "password", "domain"); 
divContents.InnerText = client.DownloadString(my report path); 

我使用SSRS 2008 R2,我的要求是顯示所有網頁彈出窗口中的報告。所以在這個方向上的所有指針都是受歡迎的。

最後添加一個點,我的網絡應用程序和報告可能會或可能不會駐留在同一個域中。

感謝, 拉維

+1

是否可以在隱藏的'div'中使用ReportControl,然後將'div'轉換爲jQuery彈出窗口? –

+1

您是否在您的代碼庫中引用了ReportExecution2005?您可以將HTML內容推送到您的窗口。 –

+0

@AnnL。是的,我可以使用ReportViewer控制(實際上我也嘗試過),但**它不允許我顯示所有頁面,只顯示報告**的第一頁,這是我的問題:( – TechnicalSmile

回答

2

我會嘗試:

  • 創建一個新的頁面。在C#端,使用ReportExecution2005 Web服務將報告呈現爲HTML。然後將結果輸出到窗口。

  • 在彈出窗口中,通過Ajax調用新的C#頁面(獲取HTML)並將輸出注入到jQuery窗口中,或者將頁面本身作爲單獨的瀏覽器窗口彈出。

我可以提供一些示例代碼,如果你需要它。

ETA:我找到的信息可能是有價值的一塊:

這是從HTML Device Settings page(重點煤礦):

工具欄

指示是顯示或隱藏工具欄。 此 參數的默認值爲true。如果此參數的值爲false,則會忽略所有其餘選項(文檔映射除外)。如果您省略了 此參數,則會自動顯示工具欄以呈現支持該格式的 格式。

當您使用URL訪問 呈現報表時,報表查看器工具欄會呈現。工具欄不是通過SOAP API呈現的。 但是,工具欄設備信息設置會影響使用SOAP Render方法時顯示報告的方式。 如果在使用SOAP呈現爲HTML時,此參數的 值爲true,則僅顯示報表的第一部分 。如果值爲 false,則整個HTML報告將呈現爲單個HTML頁面

+0

謝謝安,這是一種方式,但這裏的問題是呈現一次只給出一個頁面,我需要顯示整個報告。任何想法,如果它可能與此方法? MSDN文檔建議「後續調用渲染可以用於獲取額外頁面的報告,如果渲染擴展支持指定多個頁面。「,我想查看這個 – TechnicalSmile

+0

將它作爲PDF可以接受嗎?報告執行服務Render方法將在一次調用中返回整個PDF –

+0

這是我已經提出給別人的最後一招,它可以顯示在一個模式彈出窗口中,我的意思是用戶點擊了一個鏈接,發生了一個回傳,使用R創建了pdf eportExecution2005和那個pdf顯示在一些模式彈出。我不確定最後一步「pdf在模態彈出窗口中顯示」。有什麼想法嗎? – TechnicalSmile

1

如果您希望公開訪問安全報告而不要求憑據,則可以使用Report Viewer控件。

  1. 創建一個新的.aspx頁面,並使用ReportViewer控制像這樣:

    <rsweb:ReportViewer ID="MainReportViewer" runat="server" BackColor="White" 
        Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos=" (Collection)" 
        ProcessingMode="Remote" ShowBackButton="False" ShowFindControls="False" 
        ShowPageNavigationControls="False" SizeToReportContent="True" 
        ToolBarItemBorderColor="White" ToolBarItemHoverBackColor="White" 
        WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="100%"> 
         <ServerReport ReportServerUrl="" /> 
    </rsweb:ReportViewer> 
    
  2. 下面可以在.aspx頁面的代碼隱藏使用的代碼來配置報表服務器,用戶名和密碼[等]在您的報表查看器

    protected void Page_Init(Object sender, EventArgs e) 
    { 
        string UserName = ConfigurationManager.AppSettings["SsrsUserName"]; 
        string Password = ConfigurationManager.AppSettings["SsrsPassword"]; 
        string Domain = ConfigurationManager.AppSettings["SsrsDomain"]; 
        string ReportServerRoot = ConfigurationManager.AppSettings["SsrsServerRoot"]; 
        string ReportServerPath = ConfigurationManager.AppSettings["SsrsReportServerPath"]; 
        MainReportViewer.ProcessingMode = ProcessingMode.Remote; 
        IReportServerCredentials irsc = new CustomReportCredentials(UserName, Password, Domain); 
        MainReportViewer.ServerReport.ReportServerCredentials = irsc; 
        MainReportViewer.ServerReport.ReportServerUrl = new Uri(ReportServerRoot); 
        MainReportViewer.ServerReport.ReportPath = ReportServerPath + "YourReportFileName"; 
    } 
    
1

您憑據傳遞這樣的查詢字符串:

DSU:的datasourcename = 的userName & DSP:的datasourcename = 密碼

在更換元件大膽與報告中的值一起,例如:

http://MyServerIP/ReportServer?/FolderName/ReportName&Param1=ParamValue&rs:Command=Render&rs:Format=HTML4.0&rc:Toolbar=false&dsu:Data=reportreader&dsp:Data=password1 
+0

這是真的嗎?對我來說,它仍然要求提供認證。如果有任何解決方案或其他需要與此設置一起傳遞的請幫助嗎? – Snehal