我有这段代码:
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
方法引发异常,所以我确定这是问题,但我没有测试过根本没有传递参数。
任何线索我做错了什么?我接下来应该尝试什么?
答案 0 :(得分:1)
我很蠢。
代码很完美,应用程序将“〜!@〜!@”添加到数据库中的报告路径,而不将其显示给用户。如果我编写一个SQL语句来从数据库中的报告路径中删除这些字符,它就可以完美地运行。
谢谢,
答案 1 :(得分:0)
您需要先声明报告参数:
ReportParameter[] RptParameters = new ReportParameter[1];
然后分配参数:
RptParameters[0] = new ReportParameter("UserID", CurrentUser.Username + CurrentUser.UserKey.ToString());
然后设置参数:
ssrsRV.ServerReport.SetParameters(RptParameters);
看看情况如何。