Méthode LocalReport.ExecuteReportInCurrentAppDomain
Remarque : cette API est désormais obsolète.
Entraîne l'exécution des extensions et expressions de traitement du rapport dans l'objet AppDomain actuel.
Espace de noms : Microsoft.Reporting.WebForms
Assembly : Microsoft.ReportViewer.WebForms (en Microsoft.ReportViewer.WebForms.dll)
Syntaxe
'Déclaration
<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 _
)
'Utilisation
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
)
Paramètres
- reportEvidence
Type : System.Security.Policy.Evidence
Objet Evidence contenant les informations de sécurité sur le rapport.
Notes
Important
Cette méthode est déconseillée pour le .NET Framework 4, car la fonctionnalité de sécurité d'accès du code (CAS, Code Access Security) sur laquelle elle s'appuie est déconseillée dans le .NET Framework 4. À la place, le contrôle ReportViewer s'exécute toujours dans le domaine d'application sandbox. Vous devez utiliser AddFullTrustModuleInSandboxAppDomain et SetBasePermissionsForSandboxAppDomain. Si vous souhaitez continuer à utiliser cette méthode avec .NET Framework 4, vous devez utiliser l'élément de configuration <NetFx40_LegacySecurityPolicy> dans le fichier Web.config de votre application ASP.NET. Sinon, cette méthode lève une InvalidOperationException.
Pour plus d'informations, consultez Code Access Security Policy Compatibility and Migration.
Les expressions présentes dans le rapport seront exécutées dans l'objet AppDomain actuel avec uniquement l'indicateur d'autorisation de sécurité Execution. Par défaut, les assemblys personnalisés ne sont pas autorisés dans ce mode. Dans .NET Framework 3.5, il s'agit du mode par défaut à utiliser pour les rapports approuvés. Le tableau ci-dessous indique les modes de domaine d'application par défaut pour les différentes versions de .NET Framework.
Version de .NET Framework |
LegacySecurityPolicy est-il activé ? |
Domaine d'application par défaut |
Modes de domaine d'application utilisables |
4 |
Non (valeur par défaut) |
Sandbox |
Sandbox |
4 |
Oui |
Actuel |
Sandbox et actuel |
3.5 |
N/A |
Actuel |
Sandbox et actuel |
Ce mode peut également être utilisé pour exécuter des rapports non approuvés qui utilisent des extensions de traitement approuvées.
Pour autoriser les extensions de traitement approuvées, l'application doit appeler AddTrustedCodeModuleInCurrentAppDomain.
Exemples
Dans cet exemple, un assembly personnalisé contenant une fonction utilitaire simple qui lit des données d'un fichier texte est utilisé comme expression dans un rapport.
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;
}
}
Le code ci-dessous permet d'autoriser l'exécution du rapport contenant l'assembly personnalisé dans l'objet AppDomain actuel.
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");