2

我有这段代码:

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方法抛出的,所以我确定这就是问题所在,但我没有测试过根本不传递参数。

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

4

2 回答 2

1

我很笨。

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

谢谢,

于 2013-02-19T15:04:59.123 回答
0

您需要先声明报告参数:

ReportParameter[] RptParameters = new ReportParameter[1];

然后赋值参数:

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

然后设置参数:

ssrsRV.ServerReport.SetParameters(RptParameters);

看看这是怎么回事。

于 2013-02-19T10:25:48.967 回答