2

我们在 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 + 我们的产品

可能是什么,有什么建议吗?

2011 年 7 月 4 日更新:

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

4

3 回答 3

1

最后,报告一个答案,微软支持帮助获得:

出现此问题的原因是具有 Authenticode 签名的 .NET Framework 2.0 托管程序集需要比平时更长的时间来加载。加载具有 Authenticode 签名的 .NET Framework 2.0 托管程序集时,始终会验证签名。

此外,由于各种其他设置,.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 - 修复:具有 Authenticode 签名的 .NET Framework 2.0 托管应用程序需要比平时更长的时间才能启动。

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

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

如果您的应用程序托管在 IIS 中,请更改以下内容之一: C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet.config C:\Windows\Microsoft.NET\Framework\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\机器配置

于 2011-09-13T14:04:03.950 回答
0

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

于 2011-06-08T13:06:15.300 回答
0

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

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

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

于 2011-06-24T06:05:17.620 回答