2009-06-17 19 views
10

मैं एक विंडोज़ शेयर से फ़ाइलों को एक FTP सर्वर में स्थानांतरित करने के लिए एक FTP क्लाइंट लाइब्रेरी का उपयोग कर रहा हूं।फ़ाइल एक्सेस अस्वीकृत

पुस्तकालय की Sendfile विधि निम्नलिखित कोड का उपयोग करता है:

FileStream stream = new FileStream(localFileName, FileMode.Open); 

यह एक System.UnauthorizedAccessException में जो परिणाम को उठाकर फेंका, फिर भी मैं के तहत, खोलने के लिए नाम बदलें, और ले जाने के फ़ाइल विन्डोज़ एक्सप्लोरर का उपयोग कर रहा हूँ वही उपयोगकर्ता खाता जो कोड निष्पादित किया जा रहा है।

क्या कोई मुझे बता सकता है कि यह क्यों हो रहा है?

संपादित करें:

अजीब बात है कि मैं शेयर जो एक है कि मैं नहीं कर सकता के रूप में ही NTFS अनुमतियाँ प्रदान किया गया है पर अन्य फ़ाइलों का उपयोग कर सकते है।

यह एक विंडोज़ फॉर्म ऐप भी है।

अद्यतन:

इस के साथ

फिर भी प्रयास विफल। मैं StreamReader का उपयोग कर फ़ाइल को पढ़ने में सक्षम हूं लेकिन फ़ाइल स्ट्रीम नहीं। मैं समझ नहीं पा रहा हूं कि दोनों अलग-अलग व्यवहार क्यों करते हैं।

+0

आप एक 'विंडोज़ रूपों' ऐप्लिकेशन या एक ASP.NET पेज से बुला रहे हैं? विंडोज़ से – russau

+0

ऐप –

+1

किसी भी मौके से आप शेयर से ऐप चला रहे हैं? मुझे पता है .net (डिफ़ॉल्ट रूप से) ऐप की अनुमति को कम करता है जब आप ऐसा करते हैं। – russau

उत्तर

0

1) NTFS आईआईएस एमएमसी कंसोल एफ़टीपी साइट के भीतर एक्सप्लोरर

2) का उपयोग भौतिक निर्देशिका पर अनुमतियों/FTP फ़ोल्डर

3 पर लिखने) पढ़ा सुनिश्चित अनुमति देने के लिए है कि एफ़टीपी साइट या वर्चुअल निर्देशिका वास्तव में, मौजूद न होने पर ऊपर चरण

http://www.eggheadcafe.com/forumarchives/inetserveriisftp/Jan2006/post25322215.asp

+0

मेरा मानना ​​है कि फाइल भेजने से पहले फ़ाइल खोल रही है? यानी इस साइट पर एफ़टीपी साइट अनुमतियां एक कारक नहीं होंगी। – russau

1

प्रक्रिया अपने कोड चल रहा है फ़ाइल पर अनुमति नहीं है जाँच। क्या यह एक वेब अनुप्रयोग का हिस्सा है - यदि ऐसा है तो आपको एएसपीएनईटी खाते तक पहुंच प्रदान करने की आवश्यकता है।

फ़ाइल पर 'सभी' को अनुमति दें, और देखें कि इसमें अभी भी समस्याएं हैं या नहीं।

0

क्या आपकी परियोजना नेटवर्क ड्राइव से चल रही है? यदि ऐसा है तो इसका मतलब यह होगा कि यह एक प्रतिबंधित निजीकृत मोड में चलता है जो इसका कारण बन सकता है। प्रोजेक्ट को अपने सी ड्राइव पर कॉपी करने और इसे फिर से चलाने का प्रयास करें।

+0

नहीं, मैं डिफ़ॉल्ट स्थानीय प्रोजेक्ट निर्देशिका से दृश्य स्टूडियो के भीतर से डीबग मोड में इसे चला रहा हूं। मैं इसके यूएनसी पथ के माध्यम से फ़ाइल तक पहुंचने का प्रयास कर रहा हूं उदा। \\ सर्वर \ शेयर \ फ़ाइल लेकिन जैसा कि मेरे पास सही अनुमतियां हैं (मेरे पास पूर्ण पहुंच है) जो कि कोई समस्या नहीं होनी चाहिए? –

27

क्या आप वाकई एक ही उपयोगकर्ता खाते हैं? क्या आप

MessageBox.Show(WindowsIdentity.GetCurrent().Name); 

जैसी कुछ कोशिश कर सकते हैं?

इसके अलावा, आप सुनिश्चित करें कि फ़ाइल है केवल पढ़ने के लिए कर रहे हैं नहीं? क्या आपको फ़ाइल में लेखन पहुंच की आवश्यकता है? नहीं तो आप की कोशिश कर सकते:

FileStream stream = new FileStream(localFileName, FileMode.Open, FileAccess.Read); 
+0

हाँ एक ही खाता। –

+12

आपके उत्तर के लिए धन्यवाद। मेरी फ़ाइल केवल पढ़ने के लिए थी, लेकिन चूंकि मैं लेखन पहुंच का अनुरोध नहीं कर रहा था, इसलिए मैंने फ़ाइलएफ़ को परिभाषित करने का अनुमान लगाया। रीड अनियंत्रित था। मैं गलत था। FileAccess.Read जोड़ना कुंजी था। –

0

यह FileSecurity वर्ग के पास है।

FileSecurity class

में मिलते हैं और कोशिश करते हैं:

 // Get a FileSecurity object that represents the 
     // current security settings. 
     FileSecurity fSecurity = File.GetAccessControl(localFileName); 

     // Add the FileSystemAccessRule to the security settings. 
     fSecurity.AddAccessRule(new FileSystemAccessRule("DOMAIN\USERNAME", 
      FileSystemRights.ReadData, AccessControlType.Allow)); 

     // Set the new access settings. 
     File.SetAccessControl(localFileName, fSecurity); 
+0

जिसके परिणामस्वरूप: अनचाहे अपवाद: सिस्टम.Security.Principal.IdentityNotMappedException: कुछ या सभी पहचान संदर्भों का अनुवाद नहीं किया जा सका। इस सेटअप में शामिल डोमेन ट्रस्ट हैं जैसे कि मैं किसी अन्य डोमेन में किसी समूह का सदस्य हूं जिसे इस फ़ाइल तक पहुंच प्रदान की जाती है, मुझे आश्चर्य है कि इसका इस पर असर पड़ रहा है या नहीं। –

+0

क्या आपने "DOMAIN \ USERNAME" स्ट्रिंग को बदल दिया था? – Chernikov

+0

ओह मैंने किया लेकिन "\" से बचने के लिए भूल गया, यह अभी ठीक हो गया है लेकिन मैं अभी भी फ़ाइल तक पहुंचने में असमर्थ हूं। –

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