1

我正在尝试调用 XML 共享数据源的函数并传入参数。

出于问题的目的,我有以下查询,已清理和简化:

<Query>
    <Method Name="FunctionCall" Namespace="http://tempuri.org/" >

    <Parameters>
        <Parameter Name="BooleanParameter" Type="Boolean">
            <DefaultValue>true</DefaultValue>
        </Parameter> 
    </Parameters>

    </Method>
    <SoapAction>url:my.WebService.FunctionCall</SoapAction>
    <ElementPath IgnoreNamespaces="true"> * </ElementPath>
</Query>

现在,问题是我发送的布尔值没有任何效果。我使用了 Fiddler2 并确认 SSRS 发送的值是真或假,我使用 WCFTestClient 来确定我应该期待什么结果,并且我知道我使用与 Web 服务相同的参数名称这一事实. 但是 Web 服务始终默认为 false 参数。我永远无法让它返回一个 BooleanParameter 为 true 的结果。

我一直在这里拉头发,欢迎任何信息或怀疑。如有必要,我也可以提供更多信息。我需要做的就是让 web 服务返回一个基于 true 参数的值。

4

2 回答 2

0

这可能由于两个原因而发生。

1) 参数名称不完全匹配。请注意,参数名称区分大小写。

2) 命名空间没有正确匹配。请注意,如果您将命名空间指定为“ http://tempuri.org/ ”,请确保您的 Web 服务定义中存在尾部正斜杠字符。 例如

[WebService(Namespace = "http://tempuri.org/")]
public class ReportService : System.Web.Services.WebService
{

}
于 2013-10-30T06:04:53.680 回答
0

我不确定您指的是托管报告、RDL 还是客户端中的报告,例如 RDLC 报告。我相信使用 RDL,您会在 XML 调用中尝试做太多事情。您只需获取数据,然后在报告标记中指定默认值,而不是在调用中。因此,如果我有一个调用本地 WCF 服务的 XML 查询方法

<Query>
<Method Name="GetStateLike" Namespace="http://tempuri.org/">
<Parameters>
<Parameter Name="state"></Parameter>
</Parameters>
</Method>
<SoapAction>
http://tempuri.org/IReportingService/GetStateLike
</SoapAction>
</Query>

每当我完成时,我都不会在此处设置默认值,我只是定义此处将有一个名为“状态”的参数,然后我必须在“报告数据”中有一个值为“状态”的参数. 然后在那个参数中我定义了一个默认值。

请小心,因为我看到 SSRS 将 DateTime 和其他类型误认为是“文本”。这可能是另一个潜在问题,因为您的服务很好,但 SSRS 假设的数据类型不同于传统的布尔值,即使它在服务端是布尔值,接收 xml 调用将其作为文本。您始终可以在客户端 (SSRS) 端使用您的数据类型,看看是否是这种情况。

于 2013-09-19T20:25:20.467 回答