Question

J'ai un service Windows .Net framework 1.1 qui fonctionne sur un serveur, mais sur un autre, la méthode OnStart n'est pas appelée. J'ai une instruction Trace comme première ligne du remplacement OnStart et elle n'est pas en cours d'exécution. Aucune exception n’est levée et le responsable du contrôle des services Windows pense que le service a démarré correctement.

Quelqu'un a une idée de ce qui pourrait empêcher l'appel de la méthode OnStart?

Modifier: voici les paramètres .config pour la sortie de trace.

<configuration>
    <system.diagnostics>
        <trace autoflush="true" indentsize="4">
            <listeners>
                <add name="LogFileWriter" type="System.Diagnostics.TextWriterTraceListener,System" 
                        initializeData="c:\interface.log" />
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>
Était-ce utile?

La solution 3

Cela a finalement été un problème très obscur avec un seul serveur qui a empêché le constructeur de l'instance de service de s'exécuter.

Autres conseils

Si vous écrivez votre trace dans un écouteur EventLogTrace, il est possible que le compte de service de la deuxième machine ne dispose pas de suffisamment de droits pour accéder au journal des événements. Voir ma réponse à cette question:

service Windows en cours d'exécution mais les journaux d'événements ne fonctionnent pas

Quelles sont les autres activités de l'événement OnStart qui suggèrent que l'événement n'est pas déclenché?

Si OnInit est appelé, remplacez-le et définissez vous-même le gestionnaire

protected override void OnInit(EventArgs e) {
  this.Start += new System.EventHandler(OnStart);
  base.OnInit(e);
}

Si OnInit n'est pas appelé, ajoutez AutoEventWireup = & "true &"; pour <% @ Page section peut aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top