2011-01-25 27 views
10

Tôi có một dịch vụ web wcf sử dụng WIF để xác thực. Một phần trách nhiệm của dịch vụ web này là tạo một báo cáo và gửi email cho nó. Nếu tôi kết xuất báo cáo với dữ liệu thì mọi thứ đều ổn. Nếu tôi bao gồm bất kỳ thông số báo cáo, hằng báo cáo, hoặc thậm chí chỉ DateTime.Now tôi nhận được ngoại lệ sau đây:Dịch vụ báo cáo LocalReport và 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 

tôi có thể chạy các báo cáo tương tự trong một dịch vụ WCF mà không sử dụng WIF, vì vậy rõ ràng điều gì đó về môi trường an ninh là fubarred.

Tôi thực sự không biết cách tiến hành giải quyết vấn đề này. Có ai giúp được không? Cảm ơn!

Trả lời

16

này hoạt động:

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

Tôi thực sự không hiểu tại sao. Tôi hiểu rằng báo cáo đang được cấp quyền mà nó không thể nhận được từ WIF, nhưng tôi không hiểu những quyền đó là gì hoặc tại sao nó cần chúng. Vì vậy, câu trả lời của tôi "cho một người đàn ông một con cá", nhưng ai đó có thể "dạy một người đàn ông để cá" bằng cách giải thích vấn đề sâu hơn?

2

Tôi đã gặp phải sự cố tương tự với ứng dụng lai MVC 3/WinForms với Xác thực Windows. Tôi đã dành thời gian cố gắng xác định các quyền tối thiểu cần thiết để chạy báo cáo. Đối với tôi, điều này cũng hoạt động:

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

ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(permissionSet); 

Tùy thuộc vào bạn hoang tưởng như thế nào, bạn có thể cảm thấy an toàn hơn với bộ quyền khóa bị khóa hơn một chút.

Đáng buồn thay, tôi không giải thích lý do tại sao các quyền cụ thể này là cần thiết và không biết những người khác có cần thiết trong các trường hợp khác không, nhưng tôi hy vọng điều này hữu ích.

Các vấn đề liên quan