我有一个报告,我只能执行访问权限 - 我无法访问RDL文件。此报告公开了几个我想从URL设置的参数。
我使用标准param =数据表单成功更改了一些参数(如下所述:http://msdn.microsoft.com/en-us/library/ms153586.aspx)。但是,某些参数没有相同的参数提示和参数名称。
不幸的是,要通过URL传递参数值,我必须知道参数的名称,我不知道如何从报告及其参数提示文本中扣除。我试图检查源和后期数据,但无济于事。
有人有想法吗?
由于
P.S我也偶然发现了这个问题:http://odetocode.com/Articles/123.aspx。但是,我无法连接到报表服务器的Web服务。
答案 0 :(得分:4)
唉。我在回复自己,希望有人可以从中学习:
最终,我使用了here和here所述的Reporting Services Web服务。这里要记住的一点是服务名称已经更改(我相信从SQL Server 2005开始),端点是 ReportService2005.asmx 。
添加网络参考后,我仍然遇到各种问题。总而言之,这是最终为我工作的代码(注意:我在域中,我正在连接的IIS需要域名身份验证)。
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请求未经授权使用客户端身份验证方案'Anonymous'。从服务器收到的身份验证标头是'Negotiate,NTLM'”
要处理您需要在app.config中更改安全节点,如下所示:
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
之后一切正常。