সাধারণত, আমি এই ত্রুটিটি পেয়েছি: (লোকাল কম্পিউটারে "পরিষেবার নাম" পরিষেবাটি শুরু হয়ে গেছে এবং পরে বন্ধ হয়ে গেছে Some কিছু পরিষেবা অন্য পরিষেবাদি বা প্রোগ্রামগুলি ব্যবহার না করে তবে স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়) যখন আমার কোডটিতে কোনও সমস্যা নেই যেমন অ-বিদ্যমান ড্রাইভ পাথ, ইত্যাদি। উইন্ডোজ পরিষেবা শুরু হবে না।
আমার কাছে একটি উইন্ডোজ পরিষেবা আছে যা আকারের সীমাতে পৌঁছে যদি কোনও স্থানে ফোল্ডার / ফাইলগুলিকে ব্যাক আপ করে। উইন্ডোজ পরিষেবা শুরুর পরে পড়া সমস্ত এক্সএমএল কনফিগারেশন দ্বারা বিশদগুলি সরবরাহ করা হয়। আমার একটি পৃথক উইন্ডোজ ফর্ম রয়েছে যার একটি বাটন রয়েছে যা আমার উইন্ডোজ পরিষেবাটির সূচনাটি ঠিক কি করছে। কোডটি আমার উইন্ডোজ পরিষেবাতে দেওয়ার আগে আমি আমার উইন্ডোজ ফর্মগুলি ডিবাগিংয়ের জন্য ব্যবহার করি।
আমি যখন আমার উইন্ডোজ ফর্মগুলি শুরু করি। এটি এটি করার জন্য যা মনে করে তা করে। আমি যখন আমার কোডগুলি উইন্ডোজ পরিষেবা অনস্টার্ট () পদ্ধতিতে রাখি তখন ত্রুটিটি প্রদর্শিত হয়েছিল।
আমার কোডটি এখানে:
protected override void OnStart(string[] args)
{
private static string backupConfig = @"D:\LogBackupConfig\backupconfig.xml";
private static string serviceStat = @"D:\LogBackupConfig\Status.txt";
private static string fileFolderStat = @"D:\LogBackupConfig\FileFolderStat.txt";
protected override void OnStart(string[] args)
{
if (File.Exists(backupConfig))
{
FileSystemWatcher watcher = new FileSystemWatcher();
XmlTextReader reader = new XmlTextReader(backupConfig);
XmlNodeType type;
List<string> listFile = new List<string>();
string fileWatch = "";
//this loop is for reading XML elements and assigning to variables
while (reader.Read())
{
type = reader.NodeType;
if (type == XmlNodeType.Element)
{
if (reader.Name == "File")
{
reader.Read();
fileWatch = reader.Value;
}
else if (reader.Name == "Folder")
{
reader.Read();
fileWatch = reader.Value;
}
}
}
reader.Close();
watcher.Path = fileWatch;
watcher.Filter = "*.*";
//this loop reads whether the service will watch a file/folder
XmlTextReader reader1 = new XmlTextReader(backupConfig);
while (reader1.Read())
{
type = reader1.NodeType;
if (type == XmlNodeType.Element)
{
if (reader1.Name == "File")
{
watcher.IncludeSubdirectories = false;
watcher.Changed += new FileSystemEventHandler(OnChangedFile);
}
else if (reader1.Name == "Folder")
{
watcher.IncludeSubdirectories = true;
watcher.Changed += new FileSystemEventHandler(OnChangedFolder);
}
}
}
reader1.Close();
watcher.EnableRaisingEvents = true;
}
else
{
StreamWriter sw = new StreamWriter(serviceStat, true);
sw.WriteLine("File not found. Please start the Log Backup UI first.");
sw.Close();
}
}
আমি জানি না কী উইন্ডোজ পরিষেবাটি চালু না রাখে, উইন্ডোজ ফর্ম সিমুলেটরটি ভাল কাজ করেছিল। কি সমস্যা হবে বলে মনে হয়?
আপডেট: অনেক পরীক্ষার পরে আমি লক্ষ্য করেছি যে কেবলমাত্র একটি ফোল্ডার ডিরেক্টরি (ডাব্লু / আউট ফাইল) ব্যবহার করে উইন্ডোজ পরিষেবাটি কাজ করে না। আমি যখন ফাইলওয়াচ ভেরিয়েবলটি নির্দিষ্ট ফাইলের (তার ডিরেক্টরি সহ) প্রতিস্থাপন করি তখন উইন্ডোজ পরিষেবা শুরু হয়। যখন আমি এটিকে আবার ফোল্ডারের লোকেশনে পরিবর্তন করেছি, এটি কার্যকর হয়নি। আমি যা মনে করি তা হ'ল ফোল্ডারের অবস্থানগুলি কোনও ফাইলওয়াতারে কাজ করে না।
যখন আমি একটি নতুন উইন্ডোজ পরিষেবা তৈরি করার চেষ্টা করেছি যা কোনও ফোল্ডারের অবস্থান দেখায়, এটি কাজ করে .. তবে, আমি যখন আমার আসল উইন্ডোজ পরিষেবাতে একই অবস্থানটি চেষ্টা করেছি তখন এটি কার্যকর হয়নি! আমি মনঃ $ # * এড ছিল! দেখে মনে হচ্ছে আমাকে নতুন উইন্ডোজ পরিষেবা তৈরি করতে হবে এবং প্রতিবারই আমি একটি নতুন কোড / ফাংশন রাখলে ইনস্টলারটি বানাতে হবে .. আমি যেখানে ত্রুটি পাই সেখানে ট্র্যাক রাখতে পারি।