Mic*_*ael 23 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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我的测试报告有一个使用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>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,尽管web服务被触发,但参数没有传递给webservice,因此返回值始终为0.我调试了webservice并在DivideByTwo()方法中放置了一个断点,当从报表触发webservice调用并且命中断点时,无论我在查询XML的元素中放置什么,numberIn值始终为0.
我还尝试在"数据集"对话框的"参数"选项卡中指定"NumberIn"参数(带有提供的值),并从查询XML中删除元素 - 结果是相同的.
我在网上发现了一些帖子,概述了同样的问题,但似乎无法找到解决方案,并且在过去的几个小时内一直在撕扯我的头发.任何帮助将非常感激.
小智 1
正如 DavveK 提到的,看起来这是参数大写的一个简单的拼写错误。
您的服务定义正在寻找:
numberIn
Run Code Online (Sandbox Code Playgroud)
而您的 XML 数据集提供:
NumberIn
Run Code Online (Sandbox Code Playgroud)
正如您引用的文章提到的,参数区分大小写。请参阅#8:http://msdn.microsoft.com/en-us/library/aa964129( SQL.90).aspx
| 归档时间: |
|
| 查看次数: |
2501 次 |
| 最近记录: |