通过URL将参数传递给服务 - 如何发现参数名称?

时间:2010-03-04 17:04:53

标签: reporting-services

我有一个报告,我只能执行访问权限 - 我无法访问RDL文件。此报告公开了几个我想从URL设置的参数。

我使用标准param =数据表单成功更改了一些参数(如下所述:http://msdn.microsoft.com/en-us/library/ms153586.aspx)。但是,某些参数没有相同的参数提示和参数名称。

不幸的是,要通过URL传递参数值,我必须知道参数的名称,我不知道如何从报告及其参数提示文本中扣除。我试图检查源和后期数据,但无济于事。

有人有想法吗?

由于

P.S我也偶然发现了这个问题:http://odetocode.com/Articles/123.aspx。但是,我无法连接到报表服务器的Web服务。

1 个答案:

答案 0 :(得分:4)

唉。我在回复自己,希望有人可以从中学习:

最终,我使用了herehere所述的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>

之后一切正常。