2010-10-06 4 views
1

J'ai donc un service C# Windows qui sur certains systèmes où il n'y a pas d'accès à Internet ne démarre pas. Il essaie de démarrer mais expire avant que le service ne soit démarré. Je suis incapable de reproduire le problème dans un environnement de développement, mais l'ai vu plusieurs fois sur d'autres systèmes (généralement w2k3). Lorsque je mets mon service en mode débogage, la première chose que je fais est de créer un fichier journal sur le PC local, mais ce fichier n'est jamais créé, donc je crois que le code OnStart n'est jamais appelé.Windows service provoque la mise à jour du certificat racine sur le système sans accès à Internet

Sur l'un des systèmes que nous avons vu une entrée du journal des événements qui nous a conduit à cet article KB: http://support.microsoft.com/kb/317541

Ainsi, en suivant l'article en arrêtant le service de mise à jour du certificat racine ou de connecter l'appareil à Internet notre service commencerait maintenant. L'autre chose intéressante est que nous avons 3 services tous commencent avec un code presque identique mais c'est toujours un des 3 qui ne démarre pas. Voici notre code de la méthode 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; 
      } 
     } 

Ma question est ce que nous pourrions peut-être faire cela entraînerait la mise à jour du certificat racine ne se produise donc quand aucune connexion Internet est disponible?

Répondre

1

Existe-t-il des assemblages signés par certificat impliqués dans l'exécution de ce service? Ceux-ci pourraient déclencher une séquence d'événements dans la vérification des signatures, ce qui pourrait très bien obliger Windows à vérifier l'état des certificats racine.

Je suppose que si vous devez exécuter le service affecté sur un serveur non connecté, votre seul choix est de maintenir le service de mise à jour du certificat racine arrêté.

Je suppose que votre code d'enregistrement n'a rien à voir avec cela.

+0

Merci pour l'info ... Je ne pense pas qu'aucun de nos assemblages est signé, mais je vais devoir vérifier cela pour être sûr. – BigTundra

+0

J'ai vérifié et nous signons en effet une de nos assemblées. Cela semble être le problème. Je vous remercie! – BigTundra

+0

Excellent! Heureux d'avoir pu aider; Je sais que je déteste avoir des choses comme ça où je ne sais pas exactement pourquoi elles se produisent! –

Questions connexes