为NetFx40_LegacySecurityPolicy模式的Microsoft.ReportViewer dll授予准确的权限

时间:2019-06-12 14:27:24

标签: c# reportviewer appdomain

我正在使用this page this answer中的代码。

我在开发环境上正确运行了我的应用程序。 当我使用unc网络共享发布localhost

使用caspol:

  

caspol.exe -m -ag 1 -url“ file://// \\ MyMachine \ MyProject *” FullTrust

我也正常工作。

我使用unc share,因为,我的应用程序是使用unc部署在生产环境中的,它是“以某种方式”共享的主机。

当我部署到生产环境时,我得到了:

 System.TypeInitializationException: The type initializer for 'Microsoft.Reporting.WebForms.ReportViewer' threw an exception. ---> System.IO.FileLoadException: Loading this assembly would produce a different grant set from other instances. (Exception from HRESULT: 0x80131401) at Microsoft.Reporting.WebForms.ReportViewer..cctor()

因此问题似乎与权限有关,因此我尝试并且仍在尝试但没有成功:

AppDomainSetup setup = new AppDomainSetup { ApplicationBase = AppDomain.CurrentDomain.BaseDirectory, LoaderOptimization = LoaderOptimization.NotSpecified };
setup.SetCompatibilitySwitches(new[] { "NetFx40_LegacySecurityPolicy" });

var permissionSet = new PermissionSet(System.Security.Permissions.PermissionState.None);
permissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.AllAccess, new System.Uri(typeof(FullTrustReportviewer).Assembly.CodeBase).AbsolutePath));
permissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.AllAccess, @"C:\myproject\packages\Microsoft.ReportViewer.Runtime.WebForms.12.0.2402.15\lib\Microsoft.ReportViewer.WebForms.dll"));
permissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.AllAccess, @"C:\myproject\bin\Microsoft.ReportViewer.WebForms.dll"));

Microsoft.ReportViewer.WebForms.dll设置为“复制本地”

但是它给出了:System.Security.SecurityException: 'Request failed.'

所以问题是,我猜想它与权限设置有关,如何允许ReportViewer dlls权限。

如果不是这种情况,欢迎任何帮助。

0 个答案:

没有答案