繁体   English   中英

使用参数在 SSRS 中使用 web api

[英]Consume web api in SSRS with parameter

我正在尝试在 ssrs(XML 源)中使用 webapi。

如果将在 url 中使用参数(用于测试目的),那么它的工作非常好,例如 - http://some_xyz_url.com/Api/Report/GetReport?id=7 所以我可以在 SSRS 中使用 web api

真正的问题- 我不知道如何从 SSRS 将参数传递给 webapi。 我很努力,但没有运气。 我也搜索过stackoverflow,我的要求没有问题。

我使用的是 VS2012、(.net framework 4.0)、SQL server 2008(使用 Microsoft SQL server 报表生成器)

任何帮助真的很感激。

当我尝试将参数从 SSRS 传递到 webapi 时,我已经上传了错误消息。

在此处输入图片说明

更新

我试图传递参数,但由于某种原因参数的值始终为空,即使设置了默认值。 (见下方附件jpg)

在此处输入图片说明

这是我传递参数的方式

在此处输入图片说明

但仍然得到 404 (但我将使用硬编码 Id ,它在浏览器中工作正常)

请指教。

连接字符串可以是一个表达式。 因此,您可以创建一个参数并将数据源连接字符串设置为类似的内容:

="http://some_xyz_url.com/Api/Report/GetReport?id=" & Parameters!ReportParameter1.Value

对于“数据源”的 XML 源,我已经使用 WCF 完成了它,如果您想为正在获取的数据使用 Web 服务并且只想传入参数,我认为这与您所描述的类似进入您正在进行的方法调用的签名。

使用 SSRS 使用 Web 服务时的四件事:

  1. 您需要将您的数据源设置为使用 XML(看起来您得到了那部分)。
  2. 您的 Web 服务必须使用基本 HTTP 作为绑定类型。
  3. 如果您正在使用服务,则“连接字符串”必须是服务地址。 EG 对于本地托管服务,它将是:

     http: //localhost/Reporting/ReportService.svc

    对于部署在我的默认目录下的服务,该项目名为“Reporting”,以及具有 ReportService 接口的服务。 我还将测试您是否可以通过尝试寻找它并确保它正常工作来在 Visual Studio 中访问此服务。 或者,如果它是可发现的,请使用浏览器找到它。

  4. 一旦我有了这个,我需要创建一个“数据集”来正确查询这个服务。 MS 有一个“查询”xml blob 可以执行此操作。 如果您有参数,您的服务将采用,那么在“参数”节点中列出它们很重要。

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

大多数问题是消费的微妙程度。 我让它工作了,但认为它太脆弱了,我最终不想用它来解决我的问题。 更多相关信息: 如何使用 SSRS 2008 R2 使用 WCF 服务

经过长时间的尝试,我无法解决这个问题,这是我最后遵循的方法,它有效我无法更改 web api,所以我在使用 webapi 的解决方案中添加了一个 wcf 服务(只是一个包装器)。 我知道 wcf 包装器并不明智,但它解决了将参数传递给 webapi 的目的。

然后我在我的 SSRS 应用程序中使用 wcf 服务。

<Query>
   <Method Name="TransformData" Namespace="http://tempuri.org/">
   <Parameters>
       <Parameter Name="parameters">
           <DefaultValue>[@PARAMETER NAME]</DefaultValue>
       </Parameter>
            --- similarly pass more params here
   </Parameters>
   </Method>
<SoapAction>http://tempuri.org/ControllerORInterface/MethodName
</SoapAction>
   <ElementPath IgnoreNamespaces="true">
TransformDataResponse{}/TransformDataResult{}/diffgram{}/NewDataSet{}/yourdatasetname{all columns returned from service(comma-separated)}
</ElementPath>
</Query>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM