C # Сервис Разработка и установка - PullRequest
0 голосов
/ 24 мая 2018

Я следовал этому руководству для создания веб-службы: Создание службы Windows , но не смог установить мою службу (сам по себе код работал как приложение для Windows)

InstallUtil Error

Что я делаю не так?

Английский Ошибка: System.Security.SecurityException: источник не найден, но не удалось найти некоторые или все журналы событий.,Недоступные журналы: Безопасность

Сервисный код:

namespace EmailDoc2
{
    public partial class Emailing : ServiceBase
    {
        private Timer time = null;

        public Emailing()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            time = new Timer();
            this.time.Interval = 43200000;
            this.time.Elapsed += new System.Timers.ElapsedEventHandler(this.timer_tick);
            time.Enabled = true;
            using (StreamWriter w = File.AppendText("Log Boletas/logBoletas.txt"))
            EmailDoc.EmailDoc.Log("Service Started", w);
        }
        private void timer_tick(object sender, EventArgs e)
        {
            EmailDoc.EmailDoc.Main();
        }

        protected override void OnStop()
        {
            time.Enabled = false;
            using (StreamWriter w = File.AppendText("Log Boletas/logBoletas.txt"))
            EmailDoc.EmailDoc.Log("Service Stopped", w);
        }
    }

1 Ответ

0 голосов
/ 18 июня 2018

Это была ошибка новичка, но, в конце концов, страница совсем не была неправильной, проблема, с которой я столкнулся, заключалась в том, что я удалил часть кода, запускающего службу Windows:

namespace EnvioDocumentos
{
    static class Program
    {
        /// <summary>
        /// Code bellow is default, never erase
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new EnvioDocs() 
            };
            ServiceBase.Run(ServicesToRun);
       }
    }
}

Для таких новичков, какмне, я очень рекомендую создать новый класс (Library.cs), где вы будете вызывать ваши методы, таким образом, вы не застрянете с «я понятия не имею, как работает этот сервис»

        protected override void OnStart(string[] args)
        {
        timer1 = new Timer();
        this.timer1.Interval = yourtime;
        this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timertick); //<== This function starts every "yourtime" in milliseconds
        timer1.Enabled = true;
        Library.WriteErrorLog("Test start"); //<== best practice ever to write a log every beginning
        }

https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer#BK_CreateProject

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...