Windows 服务启动然后立即停止(代码问题?)
Posted
技术标签:
【中文标题】Windows 服务启动然后立即停止(代码问题?)【英文标题】:Windows Service starts then immediately stops (code issue?) 【发布时间】:2013-08-11 14:47:17 【问题描述】:我使用 WCF 制作了以下服务,并按照 MSDN“making a windows service”教程中的指定方式进行了安装,但是每次我启动服务时,我都会弹出一个提示,指出服务已启动和停止。我想知道为什么会发生这种情况以及如何纠正它。
服务代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;
using RemoteArchiverService;
namespace ORService
public partial class ORservice : ServiceBase
private ServiceHost ORAHost;
public ORservice()
InitializeComponent();
protected override void OnStart(string[] args)
if (ORAHost != null)
ORAHost.Close();
// Open the ServiceHostBase to start listening for commands
ORAHost = new ServiceHost(typeof(OrionWCF));
ORAHost.Open();
protected override void OnStop()
ORAHost.Close();//stop listening
[ServiceContract(Namespace = "http://Blah.Blargh.ServiceBase")]
public interface IRemoteArchive
//functions
[OperationContract]
void CollectFilesAsync(DateTime start, DateTime end);
[OperationContract]
void ChangeExpireCheck(int daysToKeep);
[OperationContract]
void UpdateActiveProfiles(Profile P, bool AddRemove);
[OperationContract]
void UpdateProfileList(Profile P, bool AddRemove);
partial class OrWCF : IRemoteArchive
private List<Profile> ProfileList = new List<Profile>();
private List<Profile> ActiveProfiles = new List<Profile>();
private int DaysToKeepData = 30;
public void UpdateProfileList(Profile P, bool AddRemove)
...
public void UpdateActiveProfiles(Profile P, bool AddRemove)
...
public void ChangeExpireCheck(int daysToKeep)
...
public void CollectFilesAsync(DateTime start, DateTime end)
...
日志读出:
服务无法启动。 System.InvalidOperationException:服务 'RemoteService.OrWCF' 的应用程序为零 (非基础设施)端点。这可能是因为没有配置 为您的应用程序找到了文件,或者因为没有服务元素 可以在配置文件中找到匹配的服务名称,或者 因为在服务元素中没有定义端点。在 System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreApplicationEndpoints(ServiceDescription 描述)在 System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription 描述,ServiceHostBase 服务主机)在 System.ServiceModel.ServiceHostBase.InitializeRuntime() 在 System.ServiceModel.ServiceHostBase.OnBeginOpen() 在 System.ServiceModel.ServiceHostBase.OnOpen(时间跨度超时)在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度 超时)在 System.ServiceModel.Channels.CommunicationObject.Open() 在 RemoteService.ORservice.OnStart(String[] args) 在 C:\Us...
【问题讨论】:
应用程序日志说什么?运行 eventvwr 找出...然后告诉我们。 已编辑以包含日志信息 你的配置没问题吧?你可以加吗?你用什么绑定?端点是什么? 想通了。我没有实施任何托管 【参考方案1】:启用 WCF 跟踪以查看有关问题的详细信息。
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
有关 WCF 配置的详细信息,请参阅MSDN。
根据新信息进行编辑: 在 App.Config 文件中找不到 WCF 服务端点配置,请参阅http://msdn.microsoft.com/en-us/library/ms733932.aspx。
【讨论】:
如果有用的话,我只是从事件查看器中添加了日志问题以上是关于Windows 服务启动然后立即停止(代码问题?)的主要内容,如果未能解决你的问题,请参考以下文章