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

时间:2013-02-19 00:15:57

标签: c# reporting-services

我有这段代码:

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()));

第一行证明了我在这些变量中得到了有效的信息。 userID最终会像“jsmith162e4aa1-d8d3-427b-bd3d-71b7f0307856”

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

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

  

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

SetParameters方法引发异常,所以我确定这是问题,但我没有测试过根本没有传递参数。

任何线索我做错了什么?我接下来应该尝试什么?

2 个答案:

答案 0 :(得分:1)

我很蠢。

代码很完美,应用程序将“〜!@〜!@”添加到数据库中的报告路径,而不将其显示给用户。如果我编写一个SQL语句来从数据库中的报告路径中删除这些字符,它就可以完美地运行。

谢谢,

答案 1 :(得分:0)

您需要先声明报告参数:

ReportParameter[] RptParameters = new ReportParameter[1];

然后分配参数:

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

然后设置参数:

ssrsRV.ServerReport.SetParameters(RptParameters);

看看情况如何。