2011-01-25 5 views
10

인증을 위해 WIF를 사용하는 wcf webservice가 있습니다. 이 웹 서비스의 책임은 보고서를 작성하여 이메일로 보내는 것입니다. 데이터로 보고서를 렌더링하면 모든 것이 정상입니다.Reporting Services LocalReport 및 WIF

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 

내가 WIF를 사용하지 않는 WCF 서비스에 동일한 보고서의에 대해 너무 명확하게 뭔가를 실행할 수 있습니다 : 어떤 보고서 매개 변수 보고서 상수, 또는 단지 DateTime.Now 나는 다음과 같은 예외가 포함 된 경우 보안 환경이 fubarred됩니다.

저는이 문제를 해결하는 방법을 모릅니다. 누구든지 도와 줄 수 있습니까? 감사합니다.

답변

16

이 작동 :

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

난 정말 이유를 이해하지 않습니다. 보고서에 WIF에서 얻을 수없는 권한이 부여되어 있음을 이해하지만 그 권한이 무엇인지, 왜 필요로하는지 이해하지 못합니다. 그래서, 제 대답은 "사람에게 물고기를줍니다"하지만 더 깊은 문제를 설명함으로써 다른 사람이 "사람에게 고기를 가르쳐 줄 수 있습니까?"

2

Windows 인증을 사용하는 MVC 3/WinForms 하이브리드 응용 프로그램에서 동일한 문제가 발생했습니다. 보고서를 실행하는 데 필요한 최소 권한을 확인하려고 시간을 보냈습니다. 나를 위해,이 또한 작동합니다 : 당신이 얼마나 편집증에 따라

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

ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(permissionSet); 

, 당신은 좀 더 아래로 잠겨 권한 세트와 안전 느낄 수 있습니다.

슬프게도 이러한 특정 권한이 필요한 이유에 대한 설명이 없으며 상황에 따라 다른 권한이 필요한지 여부는 알 수 없지만 유용하다고 생각합니다.