我正在使用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权限。
如果不是这种情况,欢迎任何帮助。