唉。我正在回覆自己,希望有人可以從中學習:
我做到了,最終使用了Reporting99 web服務,如here和here所述。這裏要記住的一點是,該服務的名稱已更改終點是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>
在那之後,一切運行良好。