Службы отчетов LocalReport и WIF

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

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, поэтому явно что-то в среде безопасности не работает.

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


person Chris McKenzie    schedule 25.01.2011    source источник


Ответы (2)


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

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

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

person Chris McKenzie    schedule 25.01.2011

Я столкнулся с той же проблемой с гибридным приложением 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);

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

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

person Ronald Zarīts    schedule 20.03.2012