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
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>
Nasıl hata ayıklama için .NET Windows ...
Nasıl PHP betikleri hata ayıklama musu...
VİM C kod hata ayıklama musunuz? Nasıl...
Nasıl 'hata Ayıklama / Uygulamayı...
Nasıl MySQL saklı yordamları hata ayık...