2010-03-04 77 views
1

我有一個報告,我有隻執行訪問 - 我沒有訪問RDL文件。這份報告公開了一些我想從URL中設置的參數。通過URL將參數傳遞給服務 - 如何發現參數名稱?

我已經成功地改變了使用標準PARAM =數據形式的一些參數(如這裏解釋:http://msdn.microsoft.com/en-us/library/ms153586.aspx)。但是,某些參數不具有相同的參數提示和參數名稱。

不幸的是,傳遞參數值的網址,我必須知道參數的名字,我不知道怎樣才能從報告及其參數的提示文本中扣除。我試圖檢查源和後數據,但無濟於事。

任何人有想法?

感謝

P.S我還無意中發現了這一點:http://odetocode.com/Articles/123.aspx。但是,我無法連接到我的報告服務器的Web服務。

回答

4

唉。我正在回覆自己,希望有人可以從中學習:

我做到了,最終使用了Reporting99 web服務,如herehere所述。這裏要記住的一點是,該服務的名稱已更改終點是ReportService2005.asmx(我從SQL Server 2005及以後相信)。

添加Web引用後,我仍然有各種問題。總而言之,這是最終爲我工作的代碼(注意:我處於域中,而我連接的IIS需要域Windows身份驗證)。

ReportParameter[] parameters; 
    const string historyId = null; 
    const bool forRendering = true; 
    ParameterValue[] values = null; 
    DataSourceCredentials[] credentials = new DataSourceCredentials[] {}; 

    ReportingService2005SoapClient c = new ReportingService2005SoapClient(); 
    c.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("USERNAME", "PASSWORD", "DOMAIN"); 
    c.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; 

    c.GetReportParameters 
    (
     "/CycleStatus/Builds Score", 
     historyId, 
     forRendering, 
     values, 
     credentials, 
     out parameters 
    ); 

然而,我通過以下誤差的困擾:

「該HTTP請求是未經授權的客戶端身份驗證方案‘匿名’從服務器接收到的認證標頭是‘協商,NTLM’」

要處理,你需要改變,在你的app.config安全節點,就像這樣:

<security mode="TransportCredentialOnly"> 
    <transport clientCredentialType="Windows" /> 
</security> 

在那之後,一切運行良好。