Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Posticipare il timeout nello startup di un servizio .NET

La classe ServiceBase di .NET, che è la classe base dalla quale ereditano tutti i Windows Service, espone un metodo RequestAdditionalTime, che serve per "allungare" il tempo dopo il quale il Service Control Manager ci informa che un servizio non è partito e quindi viene segnalato come not responding.

Questo metodo può essere chiamato esclusivamente negli overload di OnContinue, OnPause, OnStart e OnStop. La pagina di MSDN lo dice espressamente:

The RequestAdditionalTime method is intended to be called by the overridden OnContinue, OnPause, OnStart, or OnStop methods to request additional time for a pending operation.

Se non seguiamo questa semplice regola, qualsiasi chiamata a RequestAdditionalTime solleva un'exception di tipo InvalidOperationException.

Oggi pomeriggio ho dovuto usare - con scarso successo - questo metodo perchè sul mio servizio che ho sviluppato qualche giorno fa è stato riscontrato un problema. Su un solo server virtuale di produzione, il servizio non ha nessuna voglia di partire quando è marcato come Start Up Automatically. Se invece lo si fa partire manualmente, il tutto gira correttamente. Non sono riuscito a capire il perchè: la cosa interessante è che la prima riga dell'override di OnStart scrive nell'event viewer una nuova entry con una cosa tipo "AutoShutService starting...", ma questa voce non viene loggata. Ciò significa che per qualche motivo il mio servizio non raggiunge nemmeno l'OnStart, e quindi ci deve essere qualche problema prima. Non è un problema di timeout - usare la RequestAdditionalTime non ha risolto nulla.

Dato che questo problema è stato rilevato su un solo server virtuale siamo più propensi a pensare che sia quel sistema ad avere qualche problema, ma mi piacerebbe comunque capire il motivo. Lo farò a settembre, dopo le ferie: questo è, per adesso, il mio ultimo post tecnico!

Buone ferie a tutti, stavolta davvero, però!!!

powered by IMHO 1.3

Print | posted on Friday, August 4, 2006 5:48 PM | Filed Under [ Sviluppo .NET ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET