Причина: локальный отчет не позволяет передавать пустые или нулевые параметры, я не знаю почему, но он выдает исключение.
Исправлено: Один из способов выяснить, какой параметр вызывает исключение, это вызов
var result = report.LocalReport.GetParameters();
метод, в массиве результатов он имеет
result[0].State
свойство, если это значение
MissingValidValue
это вызывает исключение.
Пример:
var rv = new ReportViewer { ProcessingMode = ProcessingMode.Local };
rv.LocalReport.ReportPath = Server.MapPath("~/PrintForms/FromForm.rdlc");
rv.LocalReport.Refresh();
string mimeType;
string encoding;
string filenameExtension;
string[] streamids;
Warning[] warnings;
rv.LocalReport.SetParameters(new ReportParameter("ClientName", "გიორგი გიორგაძე"));
rv.LocalReport.SetParameters(new ReportParameter("Account", "888"));var streamBytes = rv.LocalReport.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);
return File(streamBytes, mimeType);
Код выше работает нормально, но если вы измените параметр, добавив строку в:
rv.LocalReport.SetParameters(new ReportParameter("Account", null));
Значение состояния AccountParameter для учетной записи будет равно MissingValidValue, что приведет к исключению.