0

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

现在真正奇怪的是,当我删除配置文件时,服务启动得很好(尽管由于空指针异常而停止,这是可以预料的,因为没有配置文件)。

对此有何见解?我在这里不知所措我已经在同一台机器上安装了另一个服务,它工作得很好。

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

编辑 =======

为了清楚起见,我尝试在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>
4

2 回答 2

2

这是您启动服务时可能出错的一件事,而不是简单的崩溃。您的 OnStart() 方法有 30 秒的时间完成工作并返回。如果需要更长的时间,则服务控制管理器会假定存在严重错误,停止等待您的服务启动并产生错误 1053,“服务未及时响应启动或控制请求”。

您可以通过调用 RequestAdditionalTime() 来请求额外的时间。但是您的 OnStart() 代码可能存在一些基本问题,30 秒对于启动服务来说是相当长的时间。通过改进代码中的日志记录来提高诊断此问题的几率,这样您就会知道它卡在哪里了。

于 2013-06-24T17:13:22.943 回答
1
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>

好的,所以这似乎是问题所在。我不完全确定为什么这会阻止它在我的机器上启动。(是的,我在另外两台机器上试过,服务启动得很好!!!)

无论如何,我删除了这条线并且服务也在我的机器上启动了。

于 2013-06-25T07:28:43.873 回答