SSRS 2005 - XML Web服务数据集 - 未传递给Web服务的参数

时间:2010-08-05 08:11:07

标签: xml web-services reporting-services

我有一份SSRS 2005报告,我想使用webservice来检索一些数据。该Web服务将采用几个参数。

作为测试,我在本地环境中设置了一个非常简单的演示web服务项目:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    public Service () {}

    [WebMethod]
    public int DivideByTwo(int numberIn) {
        return numberIn/2;
    }   
}

我的测试报告然后有一个使用XML数据源的数据集,连接字符串中有webservice的(localhost)URL。

在数据集的查询字符串中,我有以下内容,基于MS文档(http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx):

<Query>
    <SoapAction>http://tempuri.org/DivideByTwo</SoapAction>
    <Method Namespace="http://tempuri.org/" Name="DivideByTwo" />
    <Parameters>
        <Parameter Name="NumberIn">
          <DefaultValue>100</DefaultValue>
        </Parameter>
    </Parameters>
    <ElementPath IgnoreNamespaces="True">*</ElementPath>
</Query>

我遇到的问题是,尽管触发了web服务,但参数没有传递给webservice,因此返回值始终为0.我调试了webservice并在DivideByTwo中放置了一个断点( )方法,当从报表触发webservice调用并且命中断点时,无论我在查询XML的元素中放置什么,numberIn值始终为0。

我还尝试在“数据集”对话框的“参数”选项卡中指定“NumberIn”参数(带有提供的值),并从查询XML中删除元素 - 结果是相同的。

我在网上发现了一些帖子,概述了同样的问题,但似乎无法找到解决方案,并且在过去的几个小时里一直在撕扯我的头发。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

正如DavveK所说,看起来这是一个简单的拼写错误,你的参数大写。

您的服务定义正在寻找:

numberIn

,而您的XML DataSet提供:

NumberIn

正如您引用的文章所述,参数不区分大小写。请参阅http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx

上的#8

答案 1 :(得分:0)

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

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

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

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

}

如果未正确指定这两个条件中的任何一个,您的Web服务方法将被调用,但参数(如datatime,int)将都具有默认值。

相关问题