2012-04-17 12 views
20

लिए काम नहीं कर Directory.Exists मैं पता चल सके कि एक निर्देशिका मौजूद है और फिर इसे में फ़ाइलों की सूची प्राप्त करने कोड की एक पंक्ति है।एक नेटवर्क पथ

System.IO.Directory.Exists(@"\\Server\Folder\"); 

मैं काम करता है जब मैं इसे परीक्षण (दृश्य स्टूडियो से चलाने), लेकिन जब मैं वेब साइट को तैनात है, यह हमेशा झूठे देता है।

मैं किसी अन्य फ़ोल्डर के लिए एक ही सत्यापन करते हैं, एक और सर्वर पर (के Server2 मान लीजिए) है और यह ठीक काम करता है।

मैं तो सोचा था कि यह एक पहुँच मुद्दा था, लेकिन साझा फ़ोल्डर और नेटवर्क हर किसी के लिए सब उपयोग कर सकते है ... एक और कारण है कि यह काम नहीं होता है?

+6

कि आईआईएस के अधीन ही उपयोग कर सकते है खाता है? – Matthew

+0

क्या यह 'सर्वर' को संदर्भित करने में सक्षम नहीं है? – David

उत्तर

15

यह आपके उपयोगकर्ता के अधिकारों के अधीन ही जब आप दृश्य स्टूडियो में कोड चलाते हैं।

जब आप आईआईएस में कोड चलाते हैं तो यह एप्लिकेशन पूल की पहचान में चलता है जो डिफ़ॉल्ट रूप से निर्मित "नेटवर्क सेवा" में बनाया जाता है यह स्थानीय उपयोगकर्ता खाता है जिसके पास स्थानीय मशीन के बाहर पहुंच नहीं है।

साझा नेटवर्क पर अधिकार पहली परत कर रहे हैं, के बाद उस निर्देशिका पर NTFS अधिकार जाँच कर रहे हैं।

आप अपने उपयोगकर्ता के समान अधिकार के साथ एक डोमेन उपयोगकर्ता के लिए अनुप्रयोग पूल की पहचान बदलने की जरूरत है।

+1

यह परीक्षण के लिए मेरे स्थानीय आईआईएस पर भी काम करता था, लेकिन सेटिंग एप्लिकेशन उपयोगकर्ता के लिए थी, इसलिए यह मेरे स्थानीय विंडोज उपयोगकर्ता को नेटवर्क से कनेक्ट करने के लिए ले रहा था। मैंने अपने विशिष्ट उपयोगकर्ता को आधिकारिक सर्वर के आईआईएस में सेट किया और यह काम किया। धन्यवाद। – Amaranth

3

मैं देर से एक छोटे से हो सकता है, लेकिन मैं मिल गया है वहाँ Directory वर्ग की इस पद्धति पर एक समस्या है।

new DirectoryInfo(path).Exists 

इस तरह से आप पूरी पहचान परिवर्तन समस्या है, जो हमारे आईटी क्षेत्र ने मना कर दिया से बचने: इसके बजाय मैं प्रतिरूपण के साथ DirectoryInfo इस तरह से उपयोग किया है।

मुझे उम्मीद है कि यह किसी की मदद करेगा!

+0

यह प्रतिरूपण के मुद्दे को हल नहीं करता है। मुख्य अंतर यह है कि 'निर्देशिका' एक स्थिर वर्ग है और' DirectoryInfo' एक वर्ग का एक उदाहरण है। –

1

भविष्य में संदर्भ के लिए, यह भी काम करता है:

bool result = false; 
try 
{ 
    Directory.GetAccessControl(path); 
    result = true; 
} 
catch (UnauthorizedAccessException) 
{ 
    result = true; 
} 
catch 
{ 
    result = false; 
} 
संबंधित मुद्दे