पर सुरक्षित रूप से फ़ाइलों की प्रतिलिपि बनाएँ हमारे पास नेटएप NAS फाइलर है जो समय-समय पर विफल रहता है, यह सुनिश्चित नहीं है कि यह नेटवर्क समस्याओं, भारी भार या फ़ाइलर पर निर्भर करता है; बात यह है कि सामान्य System.IO.File.Copy(...)
कमांड कभी-कभी अप्रत्याशित रूप से विफल रहता है, जबकि यह एक मिनट पहले काम करता था और एक मिनट बाद फिर से काम करता है ... फाइलर सीआईएफएस फाइल सिस्टम के साथ काम कर रहा है।NAS Filer
System.IO.IOException:: निर्दिष्ट नेटवर्क नाम अब उपलब्ध नहीं है
मेरी log4net लॉगफ़ाइल मेंमैं अपवाद देखें। System.IO .__ Error.WinIOError (Int32 errorCode, स्ट्रिंग maybeFullPath) ... पर
नेटवर्क टीम अनिश्चित है कि क्या होता है और यही कारण है, मैं अब अगर मैं कॉपी करने के लिए एक सरल ट्राई/पुन: प्रयास करें प्रणाली को लागू कर सकते हैं सोच रहा हूँ फ़ाइल और विफलता के मामले में प्रतिलिपि पुनः प्रयास करें, यह संभवतः सिस्टम.आईओ.फाइल.कॉपी को सीआईएफएस स्टोरेज के लिए डिज़ाइन नहीं किया गया था लेकिन सामान्य एनटीएफएस ड्राइव या स्थिर नेटवर्क स्टोरेज के लिए बनाया गया था।
क्या प्रतिलिपि बनाने के लिए उपयुक्त सामान्य पैटर्न या .NET कक्षाएं हैं और को फिर से प्रयास करें या क्या मुझे बस निम्नलिखित छद्म कोड में एक दृष्टिकोण का उपयोग करना चाहिए?
while(!copied && count <5)
{
count++;
try
{
//here copy the file
...
//if no exception copy was ok
copied = true;
}
catch
{
if(count >= 5)
{
// Log that retry limit has been reached...
}
else
{
// make thread to wait for some time,
// waiting time can be in function of count or fixed...
}
}
}
'System.IO.File.Copy() 'Win32 [' CopyFile'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363851.aspx) फ़ंक्शन पर उबाल जाता है । तो मैं उस चीज को कोड करता हूं जो बार-बार उपयोग करता है और देखता है कि यह विफल रहता है या नहीं। मुझे लगता है कि आप एक बड़ी समस्या पर एक सॉफ्टवेयर बैंड-सहायता डालने की कोशिश कर रहे हैं। –
एक 'पिंग-होस्ट होस्टनाम' सेट अप करें और उसे फ़ाइल में लॉग ऑन करें। इसे कुछ घंटों तक चलने दें और फिर टाइमआउट देखें। यह आपको बताएगा कि समस्या नेटवर्क से संबंधित है या नहीं। अभी भी डिवाइस के साथ एक समस्या हो सकती है, लेकिन कम से कम आप .NET समस्या को रद्द कर सकते हैं। –
मुझे वह लूप पसंद है। पकड़ने में एक छोटी सी प्रतीक्षा संभव है। – Paparazzi