2012-07-20 209 views
42

Hola estoy recibiendo este errorde Windows fallo de inicio del servicio: No se puede iniciar el servicio de la línea de comandos o depurador

servicio no se puede iniciar desde la línea de comandos o depurador. Primero se debe instalar un servicio winwows (usando installutil.exe) y luego se inició con ServerExplorer, la herramienta administrativa de servicios de Windows o el comando NET START.

y no entiendo por qué obtengo este error. Y aquí es mi código:

{ 
    string Hash = ""; 
    string connectionstring = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString; 
    SqlConnection myConnection = new SqlConnection(connectionstring); 
    SqlCommand myCommand = new SqlCommand("GetNullHash", myConnection); 
    myCommand.CommandType = CommandType.StoredProcedure; 
    myConnection.Open(); 
    SqlDataReader rdr = myCommand.ExecuteReader(); 

    while (rdr.Read()) 
    { 
     string filename = @"\\" + rdr.GetString(3); 
     filename = System.IO.Path.Combine(filename, rdr.GetString(2)); 
     filename = System.IO.Path.Combine(filename, rdr.GetString(1)); 
     Hash = rdr.GetString(0); 
     Hash = computeHash(filename); 

    } 
    myConnection.Close(); 
    return Hash; 
} 

Respuesta

52

Mirar this video, tenía la misma pregunta. Él le muestra cómo depurar el servicio también.

Aquí están sus instrucciones usando la plantilla básica de servicio de Windows C# en Visual Studio 2010/2012.

Se agrega esto al archivo Service1.cs:

public void onDebug() 
{ 
    OnStart(null); 
} 

Cambia su principal() para llamar al servicio de esta manera si usted está en la Configuración de soluciones activas de depuración.

static void Main() 
{ 
    #if DEBUG 
    //While debugging this section is used. 
    Service1 myService = new Service1(); 
    myService.onDebug(); 
    System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); 

    #else 
    //In Release this section is used. This is the "normal" way. 
    ServiceBase[] ServicesToRun; 
    ServicesToRun = new ServiceBase[] 
    { 
     new Service1() 
    }; 
    ServiceBase.Run(ServicesToRun); 
    #endif 
} 

Tenga en cuenta que, si bien esta es una excelente manera de depurar su servicio. No llama al OnStop() a menos que lo llame explícitamente de la manera en que llamamos al OnStart(null) en la función onDebug().

+0

Alguien también me ofreció un consejo" duh "que decía: Desarrolla tu clase como lo harías en una situación normal aplicación depurable y luego importarlo a su servicio cuando sienta que la clase está lista. – Cesar

+0

Lo que hago es poner las funciones que necesito depurar en el método OnStart después de Timer.Start() ;, con eso puedo depurar. –

0

Su código no tiene nada que ver con la instalación del servicio, no es el problema.

Para probar el servicio, debe instalarlo como se indica.

Para obtener más información sobre la instalación de su servicio: Installing and Uninstalling Services

25

para instalar el servicio manualmente

para instalar o desinstalar manualmente servicio de Windows (que fue creado usando .NET Framework) utilizar la utilidad InstallUtil.exe. Esta herramienta se puede encontrar en la siguiente ruta (use el número de versión del marco apropiado).

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe

Para instalar

installutil yourproject.exe 

Para desinstalar

installutil /u yourproject.exe 

Ver: How to: Install and Uninstall Services(MSDN)

Instalar programmaticall servicio Y

Para instalar el servicio mediante programación C# ver la siguiente clase ServiceInstaller(c-sharpcorner).

+0

Esto funcionó a la perfección, que tenía un servidor problemático y necesito el servicio para ejecutar con urgencia, que se utiliza este paso para configurar el servicio en mi máquina local, asegúrese de configurarlo con el usuario correcto con los permisos necesarios. – kolexinfos

+4

Después de ejecutar 'installutil' dice que fue exitoso, pero todavía no puedo iniciar el servicio o verlo en el administrador de servicios – Bassie

0

Sugeriré la creación de un proyecto de instalación por los motivos mientras se implementa esto parece la mejor conveniencia, no hay dolores de cabeza de copiar archivos manualmente. Siga el Windows service setup creation tutorial y sepa cómo crearlo. Y esta instancia es para vb.net pero es lo mismo para cualquier tipo.

0

Para instalar Abrir CMD y el tipo de {YourServiceName} -i una vez que su tipo instalada en NET START {YourserviceName} para iniciar su servicio

para desinstalar

Para desinstalar Abrir CMD y el tipo de NET STOP {YourserviceName} tipo una vez detenido en {YourServiceName} -u y debe ser desinstalado

-1

Goto App.config

Encuentra

<setting name="RunAsWindowsService" serializeAs="String"> 
    <value>True</value> 
    </setting> 

es False

+0

¿Hay alguna documentación en línea para esta configuración? ¿Dónde lo agregaría? Intenté ApplicationSettings y no tiene ningún efecto. – bornfromanegg

Cuestiones relacionadas