SORU
31 AĞUSTOS 2012, Cuma


Windows, Yerel Bilgisayarda hizmet ve hata başladı sonra durdu

Genellikle, bu hata alıyorum: ("Local Computer hizmeti başladı ve durdu. "hizmet adı Hizmetler diğer servis veya programlar tarafından kullanılıyor yoksa onlar kendiliğinden durur, bazı şeyler benim kod, mevcut olmayan sürücü yolları gibi bir sorun var, vb. Windows hizmeti başlatılmaz.

Eğer boyut sınırına ulaştı eğer klasör/dosyaları bir konuma yedekler windows bir hizmeti var. Ayrıntılar windows hizmeti başlatmak okur bir XML Yapılandırma tarafından bulunur. Windows benim servisin onstart ne yaptığını yapan bir düğme var o ayrı bir windows Form var. Benim windows windows servis yapmadan kod hata ayıklama için formları kullanın.

Benim windows forms başladığımda. Yapmak varsayalım ne yapar. Hata geldi windows hizmet OnStart benim Ben zaman zaman() yöntemi.

İşte benim kod:

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();
        }
    }

Windows service, windows form simülatörü itibaren iyi çalıştı ne tutar bilmiyorum. Sorun nedir?

GÜNCELLEME: Birçok denemeden sonra sadece bir klasör dizini (w/out dosyası), windows servis kullanarak işe yaramadığını fark ettim. Belirli bir dosya ile size ayarlamak değişken (kendi dizini de dahil olmak üzere) yerine, windows hizmeti başladı. Bu klasörü bir yere değiştirdim, işe yaramadı. Bence ne klasör konumlarını bir filewatcher işe yaramıyor.

Bir klasör konumu saatler yeni bir windows servisi oluşturma çalıştığımda, Orijinal windows hizmeti olarak aynı yerde denedim Ancak işe yaramadı.. işe yaradı! Mindf ben$#*ed! Yeni bir windows hizmeti oluşturmak ve yükleyici bir hata alıyorum nerede takip edebiliyorum Bu şekilde.. yeni kod/fonksiyon ben her yerde inşa etmek için var gibi görünüyor.

CEVAP
31 AĞUSTOS 2012, Cuma


Eğer hizmet ve böyle başlarsa durur, kod işlenmeyen bir özel durum üretiliyor demektir. Bu çok zor hata ayıklama için, ama bir kaç seçenek vardır.

  1. Windows başvurunOlay Görüntüleyicisi. Normalde bilgisayar/sunucu yöneticisi, i tıklayarak bu olsunOlay Görüntüleyicisi->Windows Günlükleri->Uygulama. Yardımcı olabilecek özel durum buraya attı ne görebilirsiniz, ama yığın izleme alamadım.
  2. Kütüphane sınıfı bir projeye programı mantığın özü. Şimdi programın iki farklı versiyonunu oluşturun: uygulama (hata ayıklama için) konsol ve windows hizmeti. (Bu ilk çaba biraz alır, ama uzun vadede pişmanlık bir sürü kaydeder.)
  3. Daha fazla/blok yakalamak ve neler olup bittiğini daha iyi bir görüntü almak için bu uygulamayı giriş yapmayı deneyin ekleyin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • Madeon

    Madeon

    31 Ocak 2010
  • wafflepwn

    wafflepwn

    14 AĞUSTOS 2008