ReportViewer 2010无法评估表达式

问题描述:

我的项目是ASP.Net 4.0框架上的WebForms,使用ReportViewer 10,使用本地处理模式呈现的本地RDLC报告。ReportViewer 2010无法评估表达式

我的问题是,我的报告中的许多表达式都没有评估。例如,我在报告的页脚中有一个文本框,其表达式为=Globals!PageNumber - 但是当报告运行时,我只是在该字段中出现#Error。我收到一个类似的#Error,只是在我的一个字段上做了一个ToString - =Fields!MyBooleanField.Value.ToString()

也在我的页脚,=DateTime.Now能工作,而=Globals!ExecutionTime不起作用。

这对我来说没有意义 - 就好像我错过了一个参考或其他东西。我在我的项目中引用了Microsoft.ReportViewer.Common(v10)和Microsoft.ReportViewer.WebForms(v10)。

任何人有任何建议,我失踪了什么,或者我如何得到这个解决?

+0

你的设置和行为听起来正确 - 你可以预览在投标或报表生成器2.0的报告?这是否只发生在WebForms ReportViewer控件中? – 2011-09-24 03:34:57

我看到三个选项:

选项1:提升沙箱权限

表达式被编译到一个单独的程序集中,并在权限较少的沙箱中运行。使用它来增加给沙盒的权限。您可能授予的权限集可能较小,但我们没有花时间来解决这个问题。这将意味着报告及其引用的任何程序集都将具有提升的权限。尽管我们尚未部署到产品,但该解决方案适用于我们(MVC 3,.Net 4,VS2010,Microsoft.Reporting v10)。

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

选项2:建立在NET 3.5的框架

编译您的项目的.Net 3.5下

方案3:legacyCasModel

添加到您的web.config :

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

这可以防止您使用动态变量(在某些或所有情况下?)。特别是,因为ViewBag是动态的,所以不能使用Asp.Net MVC 3。

更多信息

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

该问题是由于框架4.0中的某些CAS策略更改造成的。 请添加下面一行在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