Windows服务出错启动服务时出错

时间:2011-03-29 11:59:30

标签: .net .net-3.5 windows-services service

我创建了一个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服务调用web服务

这是错误在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 个答案:

答案 0 :(得分:1)

这一行可能会引发异常:

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

检查配置文件是否存在且正确;事件日志查看器会让您知道问题所在。

考虑使用trycatch查找启动错误并以有用的方式报告。

答案 1 :(得分:0)

看看EventViewer,我相信它会包含一些与此错误相关的有用信息。此外,您可以使用以下所示的方法对其进行调试:

How to: Debug Windows Service Applications

您可以在以下网址找到有关此错误的大量信息:

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

答案 2 :(得分:0)

如果EventViewer对您没有帮助,您应该尝试使用以下方法之一进行调试:

  • 在OnStart下放置一个“Debugger.Break”并与调试器连接。
  • 在OnStart下放置10秒钟,并在延迟期间连接调试器。

答案 3 :(得分:0)

如果您的服务的配置文件中有多个具有相同合同类型的端点,则需要指定您感兴趣的端点:

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