Windows服务导致系统上的根证书更新,无法访问Internet

时间:2010-10-06 14:06:15

标签: c# windows-services windows-server-2003

所以我有一个C#windows服务,在某些没有互联网访问权限的系统上无法启动。它尝试启动,但在服务启动之前超时。我无法在任何开发环境中重现该问题,但在其他系统(通常是w2k3)上已经多次看到它。

当我将我的服务置于调试模式时,我要做的第一件事是在本地PC上创建一个日志文件,但是这个文件永远不会被创建,所以我相信OnStart代码永远不会被调用。

在其中一个系统上,我们看到了一个事件日志条目,该条目引导我们阅读这篇知识库文章:http://support.microsoft.com/kb/317541

因此,通过停止根证书更新服务或将设备连接到互联网来关注本文,我们的服务现在将启动。另一个有趣的事情是我们有3个服务都以几乎相同的代码开始,但它始终是3个未能启动的特定之一。这是我们的OnStart方法代码:

if (args.Length > 0)
        {
            if (args[0].ToLower().Equals("debug"))
            {
                string AppLog = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;

                string locallogpath = Settings.Settings.ServiceLogFileLocation.ToString();
                if (!Directory.Exists(locallogpath))
                {
                    Directory.CreateDirectory(locallogpath);
                }
                LogFileName = Path.Combine(locallogpath, AppLog + ".htm");
                try
                {
                    _logFile = new StreamWriter(new FileStream(LogFileName, System.IO.FileMode.Create));

                    _logFile.WriteLine(htmlHeader + "<span class=lognormal>Service Started!</span><br>");
                    _logFile.Close();
                }
                catch { }

                IsDebug = true;
            }
        }

我的问题是,如果没有可用的互联网连接,我们可能会做什么会导致根证书更新失败?

1 个答案:

答案 0 :(得分:1)

运行此服务是否涉及任何证书签名程序集?这些可能会在验证签名时触发一系列事件,这很可能导致Windows需要检查根证书的状态。

我的猜测是,如果您需要在未连接的服务器上运行受影响的服务,您唯一的选择是保持根证书更新服务停止。

我猜你的日志代码与它无关。