SORU
1 Mart 2011, Salı


Nasıl bir Windows Hizmeti hata ayıklama musunuz?

Konuyla ilgili TechNet makale okudum. Alıntı için:

Bir hizmet olarak çalıştırmak gerekir, çünkü Hizmetleri kapsamında Yerine Denetim Yöneticisi Visual Studio hata ayıklama içinde hizmet kadar basittir hata ayıklama için Visual Studio uygulama türleri. Bir hizmette hata ayıklamak için hizmet ve sonra başlamak gerekir bu işlemi bir hata ayıklayıcı çalışır durumda olan. Sonra uygulama hata ayıklama kullanarak standart hata ayıklama işlevselliği Visual Studio.

Şimdi benim sorunum benim hizmet ilk etapta başlatmak için başarısız olur. İlk çöker ve şöyle der:

İşlenmeyen bir özel durum (Sistemi.Çalışma zamanı.Interopservices.COMException) MyServiceName.exe[3596]) meydana geldi

ve ben (hata ayıklayıcı örneği seçiyorum anında çöker) hata ayıklama için öneriyor. Ve diyor ki

Bu MyServiceName başlatılamadı Yerel Bilgisayarda hizmeti. Hata 1053: hizmet için yanıt vermedi Başlat veya denetim isteği zamanında moda

Nasıl hizmet başlamıyor sebebi debug/araştırabilir miyim? Şey bir konsol uygulaması bu hizmeti TAM olarak ne oluşturdum ve gayet iyi çalışıyor. (Sadece OnStart kopyalanan yani() yöntemi ve ana ana döngü içeriği).

Herhangi bir yardım mutluluk duyacağız.

Hizmeti C ile yazılmıştır# birlikte çalışabilirlik. ağır kullanımı ile VS2008 kullanıyorum

CEVAP
1 Mart 2011, Salı


Uygulamanız hizmeti ya da düzenli olarak uygulamayı başlatmak için olsun (bu durumda, yani bir Form göstermek için hizmet başlangıç) karar versin için bir parametre kullanabilirsiniz:

static void Main(string[] args)
{
    if ((1 == args.Length) && ("-runAsApp" == args[0]))
    {
        Application.Run(new application_form());
    }
    else
    {
        System.ServiceProcess.ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] { new MyService() };
        System.ServiceProcess.ServiceBase.Run(ServicesToRun);
    }
}

Şimdi geçersen parametresi "-runAsApp" hata ayıklama uygulaması normalde SCM göstermiyor Bu parametre, bu yüzden de kullanabilirsiniz bu hizmet w/o herhangi bir kod değişikliği (verdiğiniz türetmek ServiceBase)

Düzenleme:

Diğer fark ile windows hizmetleri kimlik (bu olabilir özellikle önemli olan birlikte Çalışabilirlik) - emin test altında aynı kimlik içinde "uygulama" modu servis modu.

Bunu yapmak için kullanabilirsiniz bürünme (ben yazılan bir C# sarıcı olur, ama bu kolayca Google'da) app modu kullanmak için aynı kimlik windows servis edecek çalışan altında yani genellikle SMS veya Network Service.

Eğer başka bir kimlik gerekli ise uygulama ayarları ekleyebilirsiniz.config olanak sağlayan karar için kimlik bilgilerini kullanmak, ve eğer öyleyse, hangi kullanıcı için özelliklerini al - bu ayarlar olur ne zaman aktif olarak çalışan uygulama, ama kapalı için windows service (beri hizmeti zaten çalışıyor altında istenen kimlik):

  <appSettings>
    <add key="useCredentials" value="false"/>
    <add key="user" value="Foo"/>
    <add key="password" value="Bar"/>
  </appSettings>

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • We've moved!

    We've moved!

    7 Ocak 2008
  • Pocketnow

    Pocketnow

    14 EKİM 2007