Bu makalede, nasıl yapılır: (eski adı "NT hizmeti" olarak adlandırılır) bir Windows hizmeti uygulaması için bir kurulum projesi oluşturun. Bunu yapmak için <a0></a0>, önce basit bir Windows hizmeti içeren bir çözüm oluşturmalısınız, uygulama günlüğüne bir girdi yazan bir proje. Sonra bir kurulum projesi pencere hizmetini yüklemeniz ekleyin. Son olarak, hizmeti başlatın. Hizmetin, Başlat menüsünde Administrative Tools klasöründe Hizmetler öğesini kullanarak başlatabilirsiniz.
Gereksinimler
Aşağıdaki listede önerilen donanım, yazılım, ağ altyapısı ve gereken hizmet paketleri önerilmektedir:
- Microsoft Windows 2000, Windows XP, Windows Server 2003 veya daha yeni bir Microsoft işletim sistemi yüklü .NET Framework ile
- Microsoft Visual Studio .NET Enterprise, Microsoft Visual Studio .NET Enterprise Architect, Microsoft Visual Studio 2005 veya Microsoft Visual Studio 2008.
Bu makalede, Windows Services ile ilgili bilgi sahibi olduğunuz varsayılmaktadır. Windows Hizmetleri ile tam olarak bilmiyorsanız, bu makalenin <a1>
REFERENCES</a1> bölümündeki ilk başvuru konusuna bakın.
Bu makalede, ayrıca yüklemek ve bu hizmeti çalıştırmak için kullandığınız kullanıcı hesabının yüklemek ve hizmetlerini başlatmak için gerekli olan izinlere sahiptir ve ayrıca, olay günlüğüne erişmek için gerekli izinlere sahip varsayar.
Kur bir proje için bir Windows hizmeti oluşturun...
Bu bölümde bir Windows hizmetin nasıl oluşturulacağını açıklar proje ve nasıl yapılır: Windows hizmeti yüklemek için bir derlenmiş bir kurulum projesi kullanın.
Bir Windows hizmeti projesi oluşturun.
- Microsoft Visual Studio'yu.
- Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
- Project Types altında Visual C# Projects ' ı tıklatın ve sonra şablonları altında Windows hizmeti ' ni tıklatın.
Not Visual Studio 2005 veya Visual Studio 2008'de, Visual C#Project Types altında genişletin Windows ' u tıklatın ve sonra şablonları altında Windows hizmeti ' ni tıklatın. - Tür adı metin kutusuna ve ardından türü <a0>Konum</a0> metin kutusuna C:\LogWriterService. Tamam ' ı tıklatın.
- Solution Explorer'da (Çözüm Gezgini), Service1.cs ' ı sağ tıklatın ve Kod Görüntüle</a1>'ı tıklatın.
- OnStart olay işleyicisinde açıklamaları aşağıdaki kodla değiştirin:
EventLog.WriteEntry("My simple service started."); - Solution Explorer'da Service1.cs çift tıklatın.
- Kod Düzenleyicisi penceresinde, Tasarım görünümü sağ tıklatın ve sonra Özellikler ' i tıklatın.
- Özellikleri</a0> bölmesinde, Yükleyici Ekle bağlantısını tıklatın.
- ServiceNameServiceınstaller1 Özellikler bölmesinde, değiştirmek için Service1 özelliği.
- Tasarım görünümündeki Kod Düzenleyicisi penceresinde, Serviceprocessınstaller1 ' ı tıklatın.
- Özellikleri</a0> bölmesinde (yalnızca Microsoft Windows XP'de LocalService ve NetworkService değerleri kullanılabilir) LocalSystemhesabı özelliğini değiştirin.
Windows hizmeti yüklemek için bir derlenmiş Kur Project kullanın.
Windows hizmeti projesi yapılandırmak için önceki bölümdeki adımları tamamladıktan sonra hizmet uygulaması olarak yüklenebilir, hizmetin uygulama paketleri dağıtım proje eklemek için şu adımları izleyin:
- Yeni bir proje LogWriterService Projenize eklemek. Bunu yapmak için şu adımları izleyin:
- Solution Explorer'da sağ Solution 'LogWriterService' (Proje 1)Ekle işaret ve sonra da New Project ' i tıklatın.
- Tıklatın kurulumu ve dağıtımı projelerProje türleri) altında ve Kur Projectşablonları altında tıklatın.
- Ad metin kutusuna ServiceSetup yazın.
- Tür C:\Konum metin kutusunu ve sonra Tamam ' ı tıklatın.
- Dağıtım projenin ne paketini söyleyin. Bunu yapmak için şu adımları izleyin:
- Solution Explorer'da (Çözüm Gezgini), ServiceSetup sağ tıklatın, Ekle işaret ve Project çıkış ' ı tıklatın.
- Project çıktı Grup Ekle iletişim kutusunda, Project kutusuna LogWriterService Ek Yardım düğmesini tıklatın.
- Birincil çıkış ' ı tıklatın ve sonra Tamam ' ı tıklatın.
- Doğru yüklenebilmesi için yalnızca birincil çıkış ekleyin. Özel eylemler eklemek için aşağıdaki adımları izleyin:
- Solution Explorer'da (Çözüm Gezgini), ServiceSetup sağ tıklatın, Görünüm ' ün üzerine gelin ve Özel eylemler ' ı tıklatın.
- Özel eylemler ' ı sağ tıklatın ve sonra da Özel eylem Ekle'yi tıklatın.
- Application klasörü ' ı tıklatın ve sonra Tamam ' ı tıklatın.
- Tıklatın birincil LogWriterService çıktı (Active) ve sonra Tamam ' ı tıklatın.
Birincil çıkışYükleme, Tamamlama, Rollback ve Kaldır altında görüntülendiğine dikkat edin.
- Varsayılan olarak, Kur projeler oluşturma yapılandırmasında dahil edilmez. Çözüm oluşturmak için <a0></a0>, aşağıdaki yöntemlerden birini kullanın:
- Yöntem 1
- LogWriterService ' ı sağ tıklatın ve sonra da <a2>Oluştur</a2>'ı tıklatın.
- Sağ ServiceSetup ve sonra da <a2>Oluştur</a2>'ı tıklatın.
- Yöntem 2
- Yapı) menüsünde, tam çözümü oluşturmak için Configuration Manager ' ı tıklatın.
- ServiceSetup için Oluştur onay kutusunu seçmek için tıklatın.
- Tam çözümü oluşturmak için F7 tuşuna basın. Çözüm yerleşik hizmet için kullanılabilir olan bir tam yükleme paketini gerekir.
- Yeni yerleşik hizmetini yüklemek için <a0></a0>, ServiceSetup ' ı sağ tıklatın ve sonra da <a2>Yükle</a2>'yi tıklatın.
- ServiceSetup iletişim kutusunda, üç kez ileri ' yi tıklatın. Hizmetin yüklerken bir ilerleme çubuğu görüntülendiğine dikkat edin.
- Hizmet yüklendiği zaman, Kapat ' ı tıklatın.
Kod dökümü tamamlayın.
Service1.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
namespace LogWriterService
{
public class Service1 : System.ServiceProcess.ServiceBase
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Service1()
{
// The Windows.Forms Component Designer must have this call.
InitializeComponent();
// TODO: Add any initialization after the InitComponent call
}
// The main entry point for the process
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
// More than one user service may run in the same process. To add
// another service to this process, change the following line to
// create a second service object. For example,
//
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.ServiceName = "Service1";
}
/// <summary>
/// Clean up any resources that are being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
/// <summary>
/// Set things in motion so your service can do its work.
/// </summary>
protected override void OnStart(string[] args)
{
EventLog.WriteEntry("My simple service started.");
}
/// <summary>
/// Stop this service.
/// </summary>
protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop your service.
}
}
}It Works That doğrulayın.
- Denetim Masası ' nda Yönetimsel Araçlar ' ı çift tıklatın ve Hizmetleri</a5>'ni çift tıklatın
- Service1 sağ tıklatın ve sonra da <a2>Başlat</a2>'ı tıklatın
- Olay günlüğüne bir olay günlüğe kaydedilir doğrulamak için aşağıdaki yöntemlerden birini kullanın:
- Yöntem 1
- Denetim Masası ' nda Yönetimsel Araçlar ' ı çift tıklatın ve sonra da Olay Görüntüleyicisi ' ni çift tıklatın.
- Sol bölmede Uygulama günlüğü ' nü tıklatın ve sonra da sağdaki bölmede hizmetinizden için olay günlüğünü bulun.
- Yöntem 2
- Server Gezgini'nde Servers ' ı genişletin, ComputerName ' nı genişletin, olay günlükleri ' ni genişletin, Uygulama genişletin ve Service1 ' ı genişletin. Service1 sınıfının değil hizmet olduğunu anımsayın kendisi. Bu nedenle, Service1 uygulama adı kullanılır. (Adlarını özelleştirme açıklamak için bu makalenin kapsamı dışındadır olarak.)
- Imleci kütüğü girişlerinin götürün. "Benim Basit Hizmet başlatıldı" üstten ikinci giriş okumanız gerekir.
Sorun Giderme
Framework SDK belgelerine aşağıda belirtilmiştir:
Proje anlamlı bir şekilde çalışması için önce bir <a0>Hizmet</a0> uygulama proje derlenmiş yürütülebilir dosyasını sunucu üzerinde yüklü olmalıdır. Hata ayıklama açamıyor veya F5 veya F11 tuşuna basarak, bir hizmetin uygulama çalıştırın; koduna, hemen bir hizmet veya adım çalıştıramazsınız. Bunun yerine, yüklemeli ve hizmetinizi başlatın ve sonra bir hata ayıklayıcı, hizmetin işleme ekleyin.
Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
Nasıl yükleyeceğinizi, sınama ve hizmeti hata ayıklama gösteren yararlı bir Windows hizmeti oluşturmak için <a0></a0>, aşağıdaki MSDN Web sitesini ziyaret edin:
Daha fazla bilgi için MSDN Magazine, Aralık 2001 sorun gelen aşağıdaki makaleye bakın: