LocalReport.ExecuteReportInCurrentAppDomain 方法
注意:此 API 现在已过时。
导致在当前 AppDomain 中执行报表中的处理扩展插件和表达式。
命名空间: Microsoft.Reporting.WebForms
程序集: Microsoft.ReportViewer.WebForms(在 Microsoft.ReportViewer.WebForms.dll 中)
语法
声明
<ObsoleteAttribute("This method requires Code Access Security policy, which is deprecated. For more information please go to https://go.microsoft.com/fwlink/?LinkId=160787.")> _
Public Sub ExecuteReportInCurrentAppDomain ( _
reportEvidence As Evidence _
)
用法
Dim instance As LocalReport
Dim reportEvidence As Evidence
instance.ExecuteReportInCurrentAppDomain(reportEvidence)
[ObsoleteAttribute("This method requires Code Access Security policy, which is deprecated. For more information please go to https://go.microsoft.com/fwlink/?LinkId=160787.")]
public void ExecuteReportInCurrentAppDomain(
Evidence reportEvidence
)
[ObsoleteAttribute(L"This method requires Code Access Security policy, which is deprecated. For more information please go to https://go.microsoft.com/fwlink/?LinkId=160787.")]
public:
void ExecuteReportInCurrentAppDomain(
Evidence^ reportEvidence
)
[<ObsoleteAttribute("This method requires Code Access Security policy, which is deprecated. For more information please go to https://go.microsoft.com/fwlink/?LinkId=160787.")>]
member ExecuteReportInCurrentAppDomain :
reportEvidence:Evidence -> unit
public function ExecuteReportInCurrentAppDomain(
reportEvidence : Evidence
)
参数
- reportEvidence
类型:System.Security.Policy.Evidence
包含有关报表的安全信息的 Evidence 对象。
注释
重要提示 |
---|
此方法已在 .NET Framework 4 中被否决,因为在 .NET Framework 4 中否决了此方法依赖的代码访问安全性 (CAS) 功能。ReportViewer 控件改为始终在沙盒应用程序域中执行。您应当使用 AddFullTrustModuleInSandboxAppDomain 和 SetBasePermissionsForSandboxAppDomain。如果要继续将此方法用于 .NET Framework 4.0,则必须在 ASP.NET 应用程序的 Web.config 文件中使用 <NetFx40_LegacySecurityPolicy> 配置元素。否则,此方法将引发 InvalidOperationException。 有关更多信息,请参见Code Access Security Policy Compatibility and Migration。 |
报表中的表达式将在仅带有 Execution 安全权限标志的当前 AppDomain 中运行。默认情况下,不允许在此模式下使用自定义程序集。在 .NET Framework 3.5 中,此模式是默认模式,并且是用于可信报表的模式。有关不同 .NET Framework 版本中的默认应用程序域模式,请参见下表。
.NET Framework 版本 |
是否启用了 LegacySecurityPolicy? |
默认应用程序域 |
可使用的应用程序域模式 |
4 |
否(默认值) |
沙盒 |
沙盒 |
4 |
是 |
当前 |
沙盒和当前 |
3.5 |
N/A |
当前 |
沙盒和当前 |
此模式还可以用于运行使用可信处理扩展插件的不可信报表。
若要允许使用可信处理扩展插件,应用程序必须调用 AddTrustedCodeModuleInCurrentAppDomain。
示例
在此示例中,将包含用于从文本文件中读取某些数据的简单实用工具函数的自定义程序集用作报表中的表达式。
using System.IO;
using System.Reflection;
public class Util
{
public static string GetData()
{
StreamReader sr = new StreamReader("data.txt");
string data = sr.ReadToEnd();
sr.Close();
return data;
}
}
下面的代码用于允许包含自定义程序集的报表在当前 AppDomain 中执行。
reportViewer.LocalReport.ReportPath = "Report1.rdlc";
reportViewer.LocalReport.ExecuteReportInCurrentAppDomain(
Assembly.GetExecutingAssembly().Evidence);
reportViewer.LocalReport.AddTrustedCodeModuleInCurrentAppDomain("Contoso.Utilities,
Version=1.0.271.0, Culture=neutral, PublicKeyToken=89012dab8080cc90");