Ошибка в службе Windows при запуске службы - PullRequest
0 голосов
/ 29 марта 2011

Я создал службу Windows.

Когда я пытаюсь запустить службу после установки на локальном компьютере, она выдает ошибку.

enter image description here

Моя другая служба Windows работает хорошо, только эта конкретная служба выдает эту ошибку, поэтому проблема связана не с Windows, а как-то связана с моей службой.

Что может быть не так?

Это моя служба Windows:

namespace TempWindowService
{
    public partial class Service1 : ServiceBase
    {
        System.Threading.Thread _thread;
        public Service1()
        {
            InitializeComponent();
        }
       // System.Timers.Timer tm = new System.Timers.Timer(10000);
        protected override void OnStart(string[] args)
        {
            TempWindowService.MyServ.MyServSoapClient newService = new TempWindowService.MyServ.MyServSoapClient();
             //newService.BatchProcess();
             _thread = new Thread(new ThreadStart(newService.BatchProcess));
             _thread.Start();

           // tm.Interval = 1000;
           //tm.Elapsed += new ElapsedEventHandler(TimerElapsedEvent);
           // tm.AutoReset = true;
           // tm.Enabled = true;

        }

        public void StartNew()
        {
            TempWindowService.MyServ.MyServSoapClient newService = new    TempWindowService.MyServ.MyServSoapClient();
            newService.BatchProcess();
        }
        private static void TimerElapsedEvent(object source, ElapsedEventArgs e)
        {

        }


        protected override void OnStop()
        {

        }
    }
}

Я звоню в веб-службу из службы Windows, добавив ссылку на службу

Это то, что ошибка показывает в EventViewer

Service cannot be started. System.InvalidOperationException: An endpoint configuration section for contract 'MyServ.MyServSoap' could not be loaded because more than one endpoint configuration for that contract was found. Please indicate the preferred endpoint configuration section by name.
   at System.ServiceModel.Description.ConfigLoader.LookupChannel(String configurationName, String contractName, Boolean wildcard)

Что может быть не так?

Ответы [ 4 ]

1 голос
/ 29 марта 2011

Эта строка, вероятно, вызывает исключение:

TempWindowService.MyServ.MyServSoapClient newService = new TempWindowService.MyServ.MyServSoapClient();

Проверьте, что ваш файл конфигурации присутствует и правильный программа просмотра журнала событий сообщит вам, в чем проблема.

Попробуйте использовать try и catch для поиска ошибок при запуске и составления отчетов о них полезным способом.

0 голосов
/ 29 марта 2011

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

TempWindowService.MyServ.MyServSoapClient newService = new TempWindowService.MyServ.MyServSoapClient("EndPointName");
0 голосов
/ 29 марта 2011

Если EventViewer вам не помогает, попробуйте отладить его одним из следующих способов:

  • Поместите "Debugger.Break" в OnStart и соединитесь с отладчиком.
  • Переведите 10 секунд в спящий режим под OnStart и во время задержки соединитесь с отладчиком.
0 голосов
/ 29 марта 2011

Взгляните на EventViewer, я уверен, он будет содержать некоторую полезную информацию, связанную с этой ошибкой. Кроме того, вы можете отладить его, используя подход, показанный в:

Как выполнить отладку приложений-служб Windows

Вы найдете много информации об этой ошибке по адресу:

http://www.google.com/#sclient=psy&hl=en&site=&source=hp&q=An+endpoint+configuration+section+for+contract+could+not+be+loaded+because+more+than+one+endpoint+configuration+for+that+contract+was+found

...