Quiero controlar un servicio MySQL desde un proyecto .NETCore. Pude hacer esto en un proyecto .NETFramework 4.7 con una referencia a System.ServiceProcess.dll. Los proyectos .NETCore parecen utilizar un System.ServiceProcess.dll diferente que tiene menos funcionalidad.
¿Existe alguna forma diferente de controlar un servicio MySQL usando .NETCore? ¿Puedo simplemente hacer referencia a la dll .NETFramework desde un proyecto .NETCore?
Es posible que desee reelaborar las etiquetas... Parece que no es específico de MySQL, pero podría aplicarse a cualquier servicio. Parece .NET Core específico cómonunca.
- poco pegajoso
28/03/2021 a las 17:35
¿Hay algo especial que quieras hacer con el servicio? Si es solo detener/iniciar, etc., puede consultar este enlace: stackoverflow.com/questions/41014513/…; de lo contrario, deberá contarnos más sobre lo que desea hacer con el servicio
- Sr. Apnea
28/03/2021 a las 18:40
------------------------------------
Lo hago funcionar. Es el siguiente:
Instalar System.ServiceProcPaquete ess.ServiceController usando nuget de Visual Studio (Herramientas > Administrador de paquetes Nuget > Administrar paquetes Nuget para la solución)
Utilice el siguiente código como ejemplo. Este enlace explicará cómo utilizar el código: https://learn.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicecontroller.start?view=dotnet-plat-ext-6.0
Compruebe si el servicio Alerter está iniciado.
ServiceController sc = new ServiceController();
sc.ServiceName = "Alerter";
Console.WriteLine("The Alerter service status is currently set to {0}", sc.Status.ToString());
if (sc.Status == ServiceControllerStatus.Stopped)
{
// Start the service if the current status is stopped.
Console.WriteLine("Starting the Alerter service...");
try
{
// Start the service, and wait until its status is "Running".
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running);
// Display the current service status.
Console.WriteLine("The Alerter service status is now set to {0}.", sc.Status.ToString());
}
catch (InvalidOperationException)
{
Console.WriteLine("Could not start the Alerter service.");
}
}
Debe abrir su aplicación .exe haciendo clic derecho > privilegios de administrador, pero la mejor manera es agregar un archivo de manifiesto para que cuando se abra la aplicación solicite privilegios de administrador. Puedes comprobar cómo hacerlo aquí: ¿Cómo solicitar permisos de administrador cuando se inicia el programa?
------------------------------------
Lo que está buscando es algo llamado BackgroundService en Net Core. Le permite ejecutar un proceso de ejecución prolongada mientras se ejecuta la aplicación. Esto debería ayudarte a empezar:
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-5.0&tabs=visual-studio