链接到SSRS报告并在URL中设置参数

本文关键字:URL 设置 参数 SSRS 报告 链接 | 更新日期: 2023-09-27 17:59:54

我得到了以下代码块:

ErrorLogging.WriteLog(string.Format("Username = {0}, userkey = {1}, userID = {2}", CurrentUser.Username, CurrentUser.UserKey, CurrentUser.Username + CurrentUser.UserKey.ToString()));
ssrsRV.ProcessingMode = ProcessingMode.Remote;
ssrsRV.ServerReport.ReportServerUrl = new Uri(SystemConfig.SSRSServerURI);
ssrsRV.ServerReport.ReportPath = report.REPORT ?? string.Empty;
ssrsRV.ServerReport.SetParameters(new ReportParameter("UserID", CurrentUser.Username + CurrentUser.UserKey.ToString()));

第一行只是向我自己证明,我在这些变量中得到了有效的信息。用户ID最终类似于"jsmith162e4aa1-d8d3-427b-bd3d-71b7f0307856"

ssrsRV是一个Microsoft.Reporting.WebForms.ReportViewer对象。

当我尝试运行此代码时,我会收到以下错误消息:

项'/MyFolder/MyExampleReport.rdl~!@~!@'的路径无效。完整路径的长度必须小于260个字符;其他限制适用。如果报表服务器处于本机模式,则路径必须以斜杠开头。(rsInvalidItemPath)

异常是由SetParameters方法抛出的,所以我确信这就是问题所在,但我还没有测试过根本不传递参数。

知道我做错了什么吗?我下一步该试试什么?

链接到SSRS报告并在URL中设置参数

我很笨。

代码非常完美,应用程序将"~!@~!@"添加到数据库中的报表路径中,而没有向用户显示。如果我编写一条SQL语句来从数据库中的报告路径中删除这些字符,它就可以完美地工作。

谢谢,

您需要首先声明报表参数:

ReportParameter[] RptParameters = new ReportParameter[1];

然后指定参数:

RptParameters[0] = new ReportParameter("UserID", CurrentUser.Username + CurrentUser.UserKey.ToString());

然后设置参数:

ssrsRV.ServerReport.SetParameters(RptParameters);

看看进展如何。