Я видел три варианта:
Вариант 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