c# - 0xf78d2524 - ¿Por qué mi servicio.NET se inicia lentamente en un arranque de XP?
stop: 0x0000007b(0x80786b58 0xc0000034 0x00000000 0x00000000) (1)
Tengo un servicio de Windows .NET que actúa como host para algunos wcf. En el método OnStart, los hosts del servicio se crean e inician. El servicio está configurado para iniciarse automáticamente. Esto funciona bien en Windows 7 (32 bits y 64 bits) y puede iniciarse con "net start" en Windows XP Pro SP3. El inicio del servicio con el comando "inicio de red" lleva unos 20 segundos.
Pero cuando se inicia Windows XP Pro SP3 hay un mensaje de tiempo de espera en el registro de eventos. El servicio en sí no se inicia, aunque sí sus dependencias. El problema se puede reproducir en varias máquinas XP. El recuento de núcleos y la memoria no tienen influencia. Las actualizaciones están actualizadas.
Ahora es curioso: analicé el seguimiento y descubrí que el servicio tarda unos 60 segundos en iniciarse. Por lo tanto, he agregado una llamada a ReqestAdditionalTime (480000). Pero ahora el servicio demora algo más de 480 segundos. La relación es obvia. El tiempo se consume en la siguiente sección de código:
var asyncResults = new List<IAsyncResult>();
foreach (var host in myHosts)
asyncResults.Add(host.BeginOpen(null, host));
// wait until finished
while (asyncResults.Count != 0)
{
IAsyncResult ar = asyncResults[0];
if (!ar.IsCompleted) ar.AsyncWaitHandle.WaitOne(1000);
if (ar.IsCompleted)
{
asyncResults.Remove(ar);
var co = (ICommunicationObject)ar.AsyncState;
try
{
co.EndOpen(ar);
}
catch (Exception ex)
{
...
}
}
}
¿Tienes alguna idea de lo que está pasando aquí?
Oye, encontré la resolución yo mismo haciendo un intenso Log-Research.
En el registro de eventos hubo algunos servicios, que comenzaron DESPUÉS de que se haya alcanzado el tiempo de espera de mi servicio. Como mi servicio se está ejecutando como usuario especial, pude detectar dos servicios, que fueron activados por mi propio servicio. Así que los agregué a las dependencias de servicios y funciona.
Me pregunto si hay una documentación, donde se enumeran las dependencias de wcf. Como referencia aquí están los servicios, mi servicio depende de:
- http
- RPCSS
- CryptSvc
- HTTPFilter
- RasMan
Últimos dos donde los causaron el punto muerto.