2012-06-27 8 views
21

देखने के लिए FileSystemWatcher इस विषय पर प्रश्नों की कोई कमी नहीं है, लेकिन मुझे अभी भी समस्या है। मेरी स्थिति यहाँ है। मुझे एक सेवा मिली है कि मुझे कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट पथ देखने की आवश्यकता है। जब मैं स्थानीय ड्राइव का उपयोग करता हूं तो यह बहुत अच्छा काम करता है।यूएनसी पथ

हालांकि, जब मैं इसे \\server2\secondary\temp\watch_folder जैसे कुछ में बदलता हूं तो सेवा शुरू नहीं होती है। लॉग में त्रुटि

निर्देशिका नाम \\ server2 \ Secondary \ temp \ watch_folder अमान्य है।

यदि मैं इसे सीधे विंडोज एक्सप्लोरर में कॉपी करता हूं तो फ़ोल्डर ठीक खुलता है। अगर मैं अपना कोड लेता हूं और इसे पुराने विनफॉर्म ऐप में पेस्ट करता हूं तो यह ठीक काम करता है। मैंने सभी "लॉग ऑन एज़" खातों की कोशिश की है। मैंने इसे प्रशासक खाते का उपयोग करने के लिए सेट किया है, लेकिन अभी भी कोई पासा नहीं है।

_watcher = new FileSystemWatcher(); 
_watcher.Path = ConfigurationManager.AppSettings["WatchFolder"]; 
_watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName; 
_watcher.Filter = "*.txt"; 
_watcher.Created += new FileSystemEventHandler(OnCreated); 
_watcher.Error += new ErrorEventHandler(OnError); 
_watcher.EnableRaisingEvents = true; 

कोई भी विचार:

यहाँ मेरी कोड है? मुझे नुकसान हुआ है और इस बिंदु पर मुझे लगता है कि मैं बहुत लंबे समय तक देख रहा हूं। मैं ईमानदारी से किसी भी मदद की सराहना करता हूं।

धन्यवाद, निक

संपादित यहाँ अपवाद है:

सेवा प्रारंभ नहीं किया जा सकता है। System.ArgumentException: निर्देशिका नाम \ server2 \ माध्यमिक \ temp \ watch_folder अमान्य है।
System.IO.FileSystemWatcher.set_Path (स्ट्रिंग मान)
FileWatcher.FileWatcher.Watch() पर
FileWatcher.FileWatcher.OnStart पर (String [] args)
System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback पर (वस्तु पर राज्य)

+0

क्या आपका मतलब है कि समस्या हल हो गई है? –

+0

नहीं, समस्या हल नहीं हुई है। मैं अभी भी सेवा शुरू करने में असमर्थ हूं। – nickfinity

+1

क्या आपको कोई अपवाद त्रुटियां मिलती हैं? क्या आप जानते हैं कि विंडोज सेवा को डीबग कैसे करें? त्रुटियों पर कोई भी जानकारी मदद करता है। –

उत्तर

18

मैं सिर्फ यह कोशिश की:

var _watcher = new FileSystemWatcher(); 
_watcher.Path = @"\\10.31.2.221\shared\"; 
_watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName; 
_watcher.Filter = "*.txt"; 
_watcher.Created += new FileSystemEventHandler((x, y) =>Console.WriteLine("Created")); 
_watcher.Error += new ErrorEventHandler((x, y) =>Console.WriteLine("Error")); 
_watcher.EnableRaisingEvents = true; 
Console.ReadKey(); 

कि समस्याओं के बिना काम करता है, फिर भी मैं अपने अपवाद सिर्फ जब दोहराया:

  • चल उपयोगकर्ता को दूरस्थ फ़ोल्डर को पढ़ने के लिए अनुमति नहीं है।
  • रिमोट फ़ोल्डर मौजूद नहीं है।

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

एक और चीज जिसे आप कोशिश कर सकते हैं वह एक स्थानीय फ़ोल्डर को दूरस्थ फ़ोल्डर में मैप कर रहा है।

cmd में इस निष्पादित करें:

NET USE Z: \\server2\Secondary\temp\watch_folder /user:Domain\UserName Password 

फिर अपने कोड में:

_watcher.Path = @"Z:\"; 
+1

मुझे यह समस्या थी और यह एक अनुमति समस्या थी फ़ोल्डर। सहायता के लिए धन्यवाद! – liebs19

+0

मुझे यह समस्या भी थी। FileSystemWatcher के साथ मेरी सेवा नेटवर्क ड्राइव पर किसी फ़ोल्डर को नेटवर्क सेवा के रूप में मॉनिटर करने के लिए स्थापित की गई थी, ** और पथ में रिक्त स्थान हैं इसलिए मैंने सोचा कि यह समस्या थी। ** मैं इसे अपने लैपटॉप पर चला रहा था। अनुमतियों के बारे में अपना उत्तर पढ़ने के बाद, मैंने ऐप सर्वर पर FileSystemWatcher के साथ सेवा स्थापित की, और समस्या गायब हो गई! उस ऐप सर्वर से चलते समय सेवा सेवा नेटवर्क सेवा के तहत सही अनुमतियां होती हैं। सहायक जवाब! –

5

आपकी सेवा शायद यह है कि साझा करने के लिए अनुमति नहीं है एक उपयोगकर्ता खाते के अंतर्गत चल रहा है। विभिन्न क्रेडेंशियल के तहत चलाने के लिए विंडोज सेवा को बदलने का प्रयास करें।

0

आप

\\server2\\Secondary\\temp\\watch_folder 
+0

इस तरह से करने के लिए आपको सर्वर 2 के सामने दो से अधिक स्लेश की आवश्यकता है: \\\\ server2 \\ माध्यमिक \\ temp \\ watch_folder आज़माएं –

2

के रूप में मैं एक बहुत अच्छा रास्ता मिल गया अपना रास्ता है करने के लिए आवश्यकता हो सकती है कोडप्रोजेक्ट पर विंडोज़ सेवा में FileSystemWatcher के साथ काम करने वाले प्रमाण-पत्रों के साथ यूएनसी प्राप्त करने के लिए।

एड्रियन हेस पोस्ट देखें: http://www.codeproject.com/Articles/43091/Connect-to-a-UNC-Path-with-Credentials

उनका समाधान इलाज काम करता है।

0

मैं भी इस समस्या में भाग गया। मेरा फिक्स सर्वर पथ में हमारी कंपनी का डोमेन नाम शामिल करना था:

\\servername.company.com\directorytowatch 
संबंधित मुद्दे