C# 使用带参数的SSRS中的web api
我试图在ssrs(XML源代码)中使用webapi 如果将在url中使用参数(用于测试目的),那么它的工作非常好,例如-。所以我可以在SSRS中使用web api 真正的问题-我不知道如何从SSR将参数传递给webapi。我努力了,但没有成功。此外,我已经搜索了stackoverflow,没有任何问题接近我的要求 我正在使用VS2012、(.net framework 4.0)、SQL server 2008(使用Microsoft SQL server报表生成器) 非常感谢您的帮助 当我试图将参数从SSRS传递到webapi时,我上传了错误消息 更新 我试图传递参数,但由于某些原因,参数的值始终为null,即使在设置默认值之后也是如此。(见下文所附的jpg) 下面是我如何传递参数的 但仍然得到404(但我将使用硬编码的Id,它在浏览器中工作正常)C# 使用带参数的SSRS中的web api,c#,web,reporting-services,asp.net-web-api,ssrs-2008,C#,Web,Reporting Services,Asp.net Web Api,Ssrs 2008,我试图在ssrs(XML源代码)中使用webapi 如果将在url中使用参数(用于测试目的),那么它的工作非常好,例如-。所以我可以在SSRS中使用web api 真正的问题-我不知道如何从SSR将参数传递给webapi。我努力了,但没有成功。此外,我已经搜索了stackoverflow,没有任何问题接近我的要求 我正在使用VS2012、(.net framework 4.0)、SQL server 2008(使用Microsoft SQL server报表生成器) 非常感谢您的帮助 当我试图将
请注意。连接字符串可以是表达式。因此,您可以创建一个参数,并将数据源连接字符串设置为如下所示:
="http://some_xyz_url.com/Api/Report/GetReport?id=" & Parameters!ReportParameter1.Value
对于“数据源”的XML源,我已经使用WCF完成了这项工作,如果您希望为您正在获取的数据使用web服务,并且只希望将参数传递到正在进行的方法调用的签名中,我将假设WCF与您正在描述的类似 使用SSR使用web服务时有四件事:
http: //localhost/Reporting/ReportService.svc
对于部署在我的默认目录下且项目名为“Reporting”的服务和具有ReportService接口的服务。我还将测试您是否可以在VisualStudio中通过搜索并确保它正常工作来访问此服务。或者,如果可以发现,请使用浏览器查找<Query>
<Method Name="GetStateLike" Namespace="http://tempuri.org/">
<Parameters>
<Parameter Name="state"></Parameter>
</Parameters>
</Method>
<SoapAction>
http://tempuri.org/IReportingService/GetStateLike
</SoapAction>
</Query>
http://tempuri.org/IReportingService/GetStateLike
经过长时间的尝试,我无法解决这个问题,下面是我在最后的步骤,它是有效的 我不能更改webapi,所以我在使用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>
[@参数名]
---同样,在这里传递更多参数
http://tempuri.org/ControllerORInterface/MethodName
TransformDataResponse{}/TransformDataResult{}/diffgram{}/NewDataSet{}/yourdatasetname{从服务返回的所有列(逗号分隔)}
我已经试过了,但运气不好,又一次。。。。。。。。。远程服务器返回错误:(400)请求错误。请求无效。参数字典包含不可为空的类型“System.Int32”的参数“Id”的空条目。对于方法GetReport(Int32)”,可选参数必须是引用类型、可为空的类型,或者声明为可选参数。-------------------------------无法对指定的URL执行web请求。错误请求:远程服务器返回错误:(400)错误请求。我已为我的问题添加了更多注释,请查看。感谢您的帮助。从您的屏幕截图来看,您似乎缺少了“=”和“,”尝试完全按照此处提示使用:=”&参数!Id.ValueI尝试过,但现在我得到了-连接字符串表达式无法在设计时计算。您必须预览或部署报告以验证连接。我得到了相同的结果,然后单击“确定”“保存连接,当我单击“运行”时,它会按预期工作:/谢谢您提供详细的回答,我已经在以前的项目中使用了带有SSRS 2008 R2的WCF服务,但是在这个项目中,我们没有使用wpf,我们有wep api,我在使用它时遇到了问题。这太糟糕了,很抱歉它以不同的方式处理它。我想知道你是否升级到2012年,这是否会有所不同?我知道他们在web服务中做了一些小的更改,但在产品设计器或报告格式上没有做太多更改。也许可以尝试使用高级工具的SQL 2012实验室。对不起,我帮不上忙了。谢谢你的帮助