Post Page Advertisement [Top]


cannot start service from the command line or a debugger. A Windows Services Must First be Installed(Using InstallUtil.exe) and then started with the ServerExplorer,Windows Services Administrator Tool or the NET START command.


Merhaba Sevgili Okurlar,
Windows Servisler Visual Studio'dan F5 bastığımızda start olabilir durumda olmuyor, Windows Service olarak attach etmemiz gerekiyor. Bu durum da geliştirme yaparken bizi oldukça zorlayan bir durum.

Bunun için ilk olarak Servis ismi .cs uzantılı dosyada eğer servis ismini değiştirmediyseniz Service1.cs 'de onDebug metodu eklemeliyiz ve OnStart(null) ile başlamasını sağlamalıyız.


using System;
using System.Runtime.Remoting;


namespace MyService.Service
{
    public class Service : ServiceControl
    {
        public bool Start(HostControl hostControl)
        {
            StartRemoting();

            return true;
        }

        public bool Stop(HostControl hostControl)
        {
            return true;
        }

        static void StartRemoting()
        {
            ImageManager p = new ImageManager();
            string configFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
            RemotingConfiguration.Configure(configFile, false);
        }

        public void onDebug()
        {
            OnStart(null);
        }
    }

}

Daha sonra servisin Program.cs 'sine aşağıdaki kodları ekleyerek debug 'da nasıl release modda nasıl davranacağını belirleyebiliriz.

using System.Collections.Generic;
using System.ServiceProcess;
using System.Text;

namespace MyService.Service
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {


#if (!DEBUG)
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[]
   {
                new MyService()
   };
            ServiceBase.Run(ServicesToRun);

#else
            MyService myServ = new MyService();
            myServ.OnDebug();
            System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

#endif
        }
    }

}


Visual Studio'dan start diyip servisin debugger' den başladığını görebiliriz.




Sevgili Stan Lee'nin anısına ...

Sağlıkla kalın,
Huzurla Kalın.

Hiç yorum yok:

Yorum Gönder

Bottom Ad [Post Page]