当前位置:  开发笔记 > 开发工具 > 正文

签名的程序集阻止我的服务启动

如何解决《签名的程序集阻止我的服务启动》经验,为你挑选了1个好方法。

当我使用Verisign signtool.exe在我的服务中对程序集进行签名时,它在计算机启动时无法在运行Windows 2003 Server的计算机上启动.事件日志有两个事件:

"等待xxx服务连接的超时(30000毫秒)." 并且"由于以下错误,xxx服务服务无法启动:服务未及时响应启动或控制请求."

一旦机器运行,它就会正常运行.它在XP和Vista中都很好用.当程序集未签名时,它会正常启动.



1> mdb..:

对于已签名的.NET服务可执行文件,此问题非常常见:该服务将无法在启动时启动,但随后手动启动时运行良好。是否使用ServiceBase.RequestAdditionalTime无关紧要:实际上,在服务启动请求超时之前根本不执行任何用户代码。在没有Internet连接的计算机上,这种影响更加明显:在这种情况下,即使从SCM手动启动服务也会失败。

要解决此问题,请在加载时禁用Authenticode签名的验证,以便通过将以下元素添加到您的.exe.config文件中来创建Publisher证据:


    
        
    

发布者证据是很少使用的代码访问安全性(CAS)功能:仅当您的服务依赖PublisherMembershipCondition禁用它时,才会引起问题。在所有其他情况下,它将不再需要运行时执行昂贵的证书检查(包括吊销列表查找),从而消除了永久性或间歇性启动失败。

编辑,2010年7月:对于使用.NET Framework 4.0版的应用程序,不再需要此解决方法。

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有