.NET服务在Windows Server 2003 r2 sp2上失败,错误1053

时间:2011-06-08 12:56:11

标签: windows-services .net-2.0 windows-server-2003-r2

我们在Windows Server 2003 R2计算机上安装了一组.net 2.0 Windows服务。它们配置为以本地系统帐户启动,启动模式为自动。所有服务都失败,错误1053“服务未及时响应启动或控制请求”。

我已将日志记录插入其中一项服务,并调查该问题不在我们的代码中。没有执行任何单行代码。

这似乎与机器上的.net代码权限有关。但问题仅在客户端计算机上重现(两个不同的客户端具有相同的症状)。在我们的开发人员和测试人员环境中,我们无法重现它。

要重现的系统:操作系统:Windows Server 2003 R2 SP2 32位全新安装+产品先决条件:SQL Server 2005 Express SP2,.NET Framework 2 SP2 +我们的产品

什么可以,任何sugessions?

从07/04/2011更新:

来自客户端计算机的ProcessMonitor日志文件:http://dl.dropbox.com/u/8982352/Logfile.zip 服务进程名称为:ParsecServiceHost.exe

3 个答案:

答案 0 :(得分:1)

最后,报告答案,微软支持有助于:

  

发生此问题是因为.NET Framework 2.0托管程序集   具有Authenticode签名需要比平时更长的时间来加载。该   .NET Framework 2.0管理时始终验证签名   加载具有Authenticode签名的程序集。

     

此外,.NET Framework 2.0托管程序集可能需要更长时间   由于各种其他设置,比平常加载。例如,   .NET Framework 2.0托管程序集可能需要比平时更长的时间才能加载   因为网络配置。

这是Microsoft KB,它描述了问题并为.NET Framework 2.0提供了修补程序 但是这个修补程序不能解决长加载时间问题,但通过在app.config中设置generatePublisherEvidence参数,可以增加在.NET中禁用禁用签名验证的功能! 注意:如果您有.NET Framework SP2,则不需要修补程序,只需在app.config中设置generatePublisherEvidence参数。

  

http://support.microsoft.com/kb/936707 - FIX:.NET Framework 2.0   具有Authenticode签名的托管应用程序需要更长时间   比往常更开始。

要解决问题,可以使用此配置设置在.NET Framework 2.0托管应用程序中禁用签名验证。您可以在应用程序配置文件中使用此配置设置。为此,请将以下代码添加到 .NET Framework 2.0托管应用程序的.exe.config文件:

<configuration>
    <runtime>
            <generatePublisherEvidence enabled="false"/>
        </runtime>
</configuration>

如果您的应用程序托管在IIS中,请更改以下内容之一: C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ aspnet.config C:\的Windows \ Microsoft.NET \框架\ V2.0.50727 \ CONFIG \ machine.config中

注意:在x64计算机上,您还必须更改以下内容之一: C:\ WINDOWS \ Microsoft.NET \ Framework64 \ V2.0.50727 \ aspnet.config C:\的Windows \ Microsoft.NET \ Framework64 \ V2.0.50727 \ CONFIG \ machine.config中

答案 1 :(得分:0)

当服务在win 7 / vista上运行没有问题时,我认为问题是你的代码,例如你的OnStart()方法。通常,此方法不允许IO操作,并且在此方法中使用线程时要小心。

答案 2 :(得分:0)

您不应在服务的构造函数中声明将在服务的OnStart()方法中使用的任何资源。基本上,构造函数第一次运行,然后它保存要在OnStart()中使用的值,但是在OnStop()之后释放资源,然后再次使用相同的值。只需将构造函数中的所有实例化代码移动到OnStart(),它就会运行。

以下是来自MSDN的链接,供您快速参考:http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onstart.aspx

这可能还有一个问题。您可以使用调试版本。服务不在调试模式下运行,因此您应该使用发布版本来运行服务。

相关问题