繁体   English   中英

Windows服务启动失败

[英]Windows Service Starting Failure

我有一个用C#编写的Windows服务,并使用installUtil.exe实用程序安装在我的计算机上。 安装成功完成后,我正在尝试启动服务。 但是,这给了我1053错误。

现在真正的怪异之处是,当我删除Config文件时,该服务就可以正常启动(尽管随后它会由于空指针Exception而停止,因为没有配置文件,这是可以预期的)。

有什么见解吗? 我在这里茫然不知所措,我在同一台机器上安装了另一台服务,效果很好。

注意:操作系统为Windows 7 Home Premium x64

编辑=======

为了清楚OnStart() ,我尝试在OnStart()方法中记录(使用事件查看器)。 删除日志文件后,我可以看到所有日志条目,并且该服务可以正常运行,直到需要从配置文件中获取数据为止。

问题似乎是当配置文件仍然存在时。 OnStart()方法的第一行进行了日志输入,但是,程序尚未到达此点。

编辑2 ========================

protected override void OnStart(string[] args)
    {
        try
        {
            this.EventLog.WriteEntry("Starting Focus Stock Service");

仅当配置文件不存在时才记录此日志条目,否则将无法进行此操作。

> <?xml version="1.0"?> <configuration>   <appSettings>
>     <add key="Directory" value="C:\Logs\FocusCommon"/>
>     <add key="FileName" value="log"/>
>     <add key="LogLevel" value="3"/>
>     <add key="StockRemotingServerPort" value="10001"/>
>     <add key="StockRemotingServerName" value="FocusStockServer"/>
>     <add key="SQLServerConnStringTemplate" value="server=$server$;uid=$username$;pwd=$password$;database=$database$;MultipleActiveResultSets=True;Pooling=False;"/>
>     <add key="AccountingSynchIntervalMinutes" value="1"/>
>     <add key="LocalImageDirectory" value="C:\Focus360_Image_Dir"/>
>     <add key="LocalBrandImageDirectory" value="C:\Focus360_Image_Dir\Brands"/>
>     <add key="LocalAttachmentDirectory" value="C:\Focus360_Attachment_Dir"/>
>     <add key="EmailServer" value="maltanet.net" />
>     <add key="EmailPort" value="25" />
>     <add key="EmailUserName" value="" />
>     <add key="EmailPassword" value="" />
>     <add key="EmailUseSSL" value="false" />   </appSettings>
<runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="FSS_SQLConnPool" publicKeyToken="40FEE7F833FAA042" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.0.4525.28539" newVersion="1.0.4525.28539"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

这是启动服务时可能出错的件事,但它通常会崩溃。 您的OnStart()方法有30秒的时间完成作业并返回。 如果花费的时间更长,则服务控制管理器会认为有严重的错误,停止等待服务启动,并产生错误1053,“服务未及时响应启动或控制请求”。

您可以通过调用RequestAdditionalTime()来请求其他时间。 但是有些奇怪的是,您的OnStart()代码基本上有问题,30秒钟是启动服务的时间很长。 通过改进代码中的日志记录来提高诊断此问题的几率,这样您就可以知道问题所在。

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>

好的,这似乎是问题所在。 我不完全确定为什么这会阻止它在我的计算机上启动。 (是的,我在另外两台机器上尝试过,并且服务开始正常!!)

无论如何,我删除了这一行,该服务也在我的机器上启动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM