Предоставление точных разрешений для библиотек Microsoft.ReportViewer для режима NetFx40_LegacySecurityPolicy - PullRequest
0 голосов
/ 12 июня 2019

Я использую код от этой страницы этого ответа .

Я правильно запускаю свое приложение в среде разработки.Когда я публиковал localhost с unc сетевой ресурс

с помощью 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.

Если это не так, любая помощь приветствуется.

...