XML webservice数据集

我有一份SSRS 2005报告,我想使用Web服务来检索一些数据。 这个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>

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

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

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


正如DavveK提到的那样,它看起来像是一个简单的错字,带有参数的大写字母。

您的服务定义正在寻找:

numberIn

而你的XML数据集提供:

NumberIn

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


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

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

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

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

}

如果这两个条件中的任何一个没有被正确地指定,你的web服务方法将被调用,但参数(如datatime,int)将全部具有默认值。

链接地址: http://www.djcxy.com/p/56657.html

上一篇: XML webservice dataset

下一篇: Asp.Net 3.5 Routing to Webservice?