Службы отчетности LocalReport и WIF - PullRequest
10 голосов
/ 25 января 2011

У меня есть веб-сервис wcf, который использует WIF для аутентификации. Часть ответственности этого веб-сервиса заключается в создании отчета и его отправке по электронной почте. Если я представляю отчет с данными, то все в порядке. Если я включаю какие-либо параметры отчета, константы отчета или даже просто DateTime. Теперь я получаю следующее исключение:

An error occurred during local report processing.Failed to load expression host assembly. Details: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed

Я могу запустить тот же отчет в службе WCF, которая не использует WIF, поэтому очевидно, что что-то не так со средой безопасности.

Я действительно не знаю, как приступить к решению этой проблемы. Кто-нибудь может помочь? Спасибо!

Ответы [ 2 ]

16 голосов
/ 25 января 2011

Это работает:

var reportInstance = new LocalReport();
reportInstance.SetBasePermissionsForSandboxAppDomain(new PermissionSet(PermissionState.Unrestricted));

Я не очень понимаю, почему. Я понимаю, что отчету предоставляются разрешения, которые он не может получить от WIF, но я не понимаю, какие это разрешения и зачем они нужны. Итак, мой ответ «дает человеку рыбу», но может ли кто-то еще «научить человека ловить рыбу», объяснив более глубокую проблему?

2 голосов
/ 20 марта 2012

Я столкнулся с той же проблемой с гибридным приложением MVC 3 / WinForms с аутентификацией Windows. Я потратил некоторое время, пытаясь определить минимальные разрешения, необходимые для запуска отчета. Для меня это тоже работает:

var permissionSet = new PermissionSet(PermissionState.None);
var flags = SecurityPermissionFlag.Execution | 
            SecurityPermissionFlag.ControlPrincipal;
var permission = new SecurityPermission(flags);
permissionSet.AddPermission(permission);

ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(permissionSet);

В зависимости от того, насколько вы параноидальны, вы можете чувствовать себя в большей безопасности, установив немного более закрытые права доступа.

К сожалению, у меня нет объяснения, почему эти конкретные разрешения необходимы, и я не знаю, нужны ли другие при других обстоятельствах, но я надеюсь, что это полезно.

...