2011-01-25 6 views
10

मेरे पास एक wcf webservice है जो प्रमाणीकरण के लिए WIF का उपयोग करता है। इस webservice की ज़िम्मेदारी का एक हिस्सा एक रिपोर्ट उत्पन्न करना और इसे ईमेल करना है। अगर मैं डेटा के साथ रिपोर्ट प्रस्तुत करता हूं तो सब कुछ ठीक है।रिपोर्टिंग सेवाएं स्थानीय रिपोर्ट और 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 

मैं एक WCF सेवा में एक ही रिपोर्ट है, तो स्पष्ट रूप से के बारे में कुछ ऐसा है जो WIF का उपयोग नहीं करता चला सकते हैं: अगर मैं किसी भी रिपोर्ट पैरामीटर, रिपोर्ट स्थिरांक, या बस DateTime.Now मैं निम्नलिखित अपवाद शामिल सुरक्षा वातावरण फ्यूबर किया गया है।

मुझे वास्तव में यह नहीं पता कि इस समस्या को हल करने के साथ कैसे आगे बढ़ना है। क्या कोई मदद कर सकता है? धन्यवाद!

उत्तर

16

यह काम करता है:

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

मैं सच में समझ में नहीं आता क्यों। मैं समझता हूं कि रिपोर्ट को अनुमति दी जा रही है जो इसे वाईआईएफ से नहीं मिल सकती है, लेकिन मुझे नहीं पता कि वे कौन सी अनुमतियां हैं या उन्हें इसकी आवश्यकता क्यों है। तो, मेरा जवाब "एक आदमी को एक मछली देता है," लेकिन क्या कोई और गहरी समस्या बताकर "मछली को एक आदमी को सिखा सकता है"?

2

मुझे विंडोज प्रमाणीकरण के साथ एक एमवीसी 3/विनफॉर्म हाइब्रिड ऐप के साथ एक ही समस्या का सामना करना पड़ रहा था। मैंने रिपोर्ट चलाने के लिए आवश्यक न्यूनतम अनुमतियों को निर्धारित करने का प्रयास करने में कुछ समय बिताया। मेरे लिए, यह भी काम करता है:

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

ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(permissionSet); 

आप कैसे पागल हैं पर निर्भर करता है, तो आप अनुमति सेट में थोड़ा और अधिक से लॉक के साथ सुरक्षित महसूस कर सकते हैं।

अफसोस की बात है, मुझे कोई स्पष्टीकरण नहीं है कि इन विशेष अनुमतियों की आवश्यकता क्यों है और यह नहीं पता कि अन्य परिस्थितियों में दूसरों की क्या आवश्यकता है, लेकिन मुझे आशा है कि यह उपयोगी होगा।