ReportViewer 2010 не может оценить выражения - PullRequest
6 голосов
/ 14 июня 2011

Мой проект - ASP.Net WebForms на платформе 4.0, использующий ReportViewer 10, локальные отчеты RDLC, отображаемые с использованием режима локальной обработки.

Моя проблема в том, что многие выражения в моем отчете не оцениваются.Например, у меня есть текстовое поле в нижнем колонтитуле отчета с простым выражением =Globals!PageNumber - но когда отчет запускается, я просто получаю #Error в этом поле.Я получаю похожую ошибку #Error, просто выполняя ToString для одного из моих полей - =Fields!MyBooleanField.Value.ToString().

Также в моем нижнем колонтитуле =DateTime.Now работает, а =Globals!ExecutionTime НЕ работает.

Это не имеет смысла для меня - как будто я пропускаю ссылку или что-то.В моем проекте есть ссылки как на Microsoft.ReportViewer.Common (v10), так и на Microsoft.ReportViewer.WebForms (v10).

У всех есть какие-либо предложения относительно того, что мне не хватает, или как я могу это получитьрешена?

Ответы [ 2 ]

11 голосов
/ 09 марта 2012

Я видел три варианта:

Вариант 1: повышение разрешений для песочницы

Выражения скомпилированы в отдельную сборку и выполняются в изолированной программной среде с меньшими разрешениями. Используйте это, чтобы увеличить разрешения, предоставляемые песочнице. Вероятно, вы можете предоставить меньший набор разрешений, но мы просто не потратили время на то, чтобы это выяснить. Это будет означать, что отчет и любые сборки, на которые он ссылается, будут иметь повышенные разрешения. Это решение работает для нас (MVC 3, .Net 4, VS2010, Microsoft.Reporting v10), хотя мы еще не развернули в производство.

localReport.SetBasePermissionsForSandboxAppDomain(
    AppDomain.CurrentDomain.PermissionSet.Copy());

Вариант 2: сборка на .Net 3.5 Framework

Скомпилируйте ваш проект под .Net 3.5

Вариант 3: legacyCasModel

Добавьте это в свой web.config:

<system.web>
  <trust legacyCasModel="true" level="Full"/>
</system.web>

Это предотвращает использование динамических переменных (в некоторых или во всех случаях?). В частности, нельзя использовать Asp.Net MVC 3, поскольку ViewBag является динамическим.

Дополнительная информация

http://social.msdn.microsoft.com/Forums/en-US/vsreportcontrols/thread/be1a6149-a120-4e66-96f8-63f5c4d43c87

http://blogs.msdn.com/b/brianhartman/archive/2010/02/18/expression-evaluation-in-local-mode.aspx

1 голос
/ 28 сентября 2011

Проблема связана с некоторыми изменениями политики CAS в платформе 4.0. Пожалуйста, добавьте следующую строку в web.config:

<trust legacyCasModel="true" level="Full"/>

в разделе <system.web>

См. Ссылку ниже:

http://blogs.msdn.com/b/brianhartman/archive/2010/02/18/expression-evaluation-in-local-mode.aspx

...