SSRS 2008传递的xml参数被忽略

时间:2013-09-19 20:03:41

标签: xml reporting-services parameters

我正在尝试调用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发送的值为true或false,我使用WCFTestClient来确定我应该期待的结果,并且我知道我使用的参数名称与Web服务相同。但Web服务始终默认为false参数。我永远不能让它返回一个布尔参数为true的结果。

我一直在这里拔头发,欢迎任何信息或怀疑。如有必要,我也可以提供更多信息。我需要做的就是让webservice根据真实参数返回一个值。

2 个答案:

答案 0 :(得分: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>

我没有在这里设置默认值,我只是在这里定义一个名为'state'的参数然后我必须在'Report Data'中有一个具有值的参数'州'。然后在该参数中我定义一个默认值。

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

答案 1 :(得分:0)

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

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

2)命名空间未正确匹配。请注意,如果您将名称空间指定为 “http://tempuri.org/”确保您的网络服务定义中存在前瞻性斜杠字符。 例如。

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

}