2008-08-23 6 views
11

जब मैं एक साझा नेटवर्क (एक ड्राइव को मैप किया) से एक .NET विधानसभा (boo.exe) चलाने का प्रयास है, यह विफल रहता है, क्योंकि यह केवल आंशिक रूप से भरोसा किया है:चल रहा है "आंशिक रूप से भरोसा" .NET एक साझा नेटवर्क से विधानसभाओं

Unhandled Exception: System.Security.SecurityException: That assembly does not allow partially trusted callers. 
    at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed) 
    at BooCommandLine..ctor() 
    at Program..ctor() 
    at ProgramModule.Main(String[] argv) 
The action that failed was: 
LinkDemand 
The assembly or AppDomain that failed was: 
boo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67 
The Zone of the assembly that failed was: 
Intranet 
The Url of the assembly that failed was: 
file:///H:/boo-svn/bin/boo.exe 

a blog post से निर्देशों के साथ, मैंने .NET कॉन्फ़िगरेशन को नीतियों को file:///H:/* के साथ अपने यूआरएल के रूप में पूरी तरह से भरोसा करने के लिए एक नीति जोड़ा। मैंने URL को में में एनईटी कॉन्फ़िगरेशन में असेंबली उपकरण का मूल्यांकन करके और यह नोट किया कि boo.exe में अप्रतिबंधित अनुमति (जो कि नीति से पहले नहीं थी) दर्ज करें।

अनुमति के साथ भी, boo.exe नहीं चल रहा है। मुझे अभी भी एक ही त्रुटि संदेश मिलता है।

इस समस्या को डीबग करने के लिए मैं क्या कर सकता हूं? नेटवर्क शेयरों से "आंशिक रूप से भरोसेमंद" असेंबली चलाने के लिए कोई और तरीका है जिसे मैं चलाने के लिए हर विधानसभा के लिए कुछ बदलना चाहता हूं?

उत्तर

5

.NET 3.5 SP1 के साथ, यूएनसी शेयरों से चल रहे .NET असेंबली में पूर्ण अनुमतियां हैं।

वर्कअराउंड और चर्चाओं के लिए ब्रैड अब्राम के Allow .exes to be run off a network shares देखें, और आखिरकार .NET 3.5 SP1 allows managed code to be launched from a network share का पालन करें।

+0

यह विंडोज 7 में काम नहीं करता है जाहिर है –

+0

दिलचस्प। यह संभव है कि विंडोज 7 नेटवर्क निष्पादन, प्रबंधित या मूल पर चलाए गए निष्पादन योग्य लॉक हो। –

0

मुझे लगता है कि आप अपनी असेंबली में AllowPartiallyTrustedCallers विशेषता जोड़ना चाहते हैं। त्रुटि संदेश का तात्पर्य है कि जो कुछ आपके boo.exe असेंबली में कॉल कर रहा है वह पूरी तरह भरोसेमंद नहीं है, और boo.exe में यह विशेषता नहीं है।

2

'caspol.exe' प्रोग्राम (.NET रनटाइम के साथ प्रदान किया गया) पर एक नज़र डालें। आपको उस मशीन पर ऐसा करना होगा जिसे आप एप्लिकेशन चलाने की कोशिश कर रहे हैं। मैं 'मार्क' और असेंबली (शायद सिर्फ मुझे) करने में सक्षम नहीं था। हालांकि, कैस्पोल का उपयोग करके और मेरे ऐप के लिए उचित अनुमति स्थापित करने के लिए, LocalIntranet_Zone, मेरे समान मुद्दे को ठीक करें।

मैंने सुना है (लेकिन अभी तक यह कोशिश नहीं की है), कि .NET 3.5 SP1 ने इस कड़े सुरक्षा आवश्यकता को हटा दिया है (.NET असेंबली को डिफ़ॉल्ट रूप से किसी शेयर पर रहने की अनुमति नहीं दे रहा है)।

caspol -addgroup 1.2 -url file:///H:/* FullTrust 

यह नीतियों के प्रबंध बस काम नहीं करता है के लिए .NET विन्यास जीयूआई लगता है:

संबंधित मुद्दे