Är i startgroparna att bygga en window service. Det nya för den här gången är dock att Servicen vill jag kunna kontrollera från en webbsida (asp.net). Både webbappen och servicen kommer leva på samma (webb)server. Har inte skrivit kod som startar en service men det lär garanterat finnas. Skall du kunna påverka servicen från webben bör det definitivt vara ett eget konto som är strypt. Använd klassen Service Controller (sätt referens till System.ServiceProcess). Tackar för svaren och synpunkterna. Kombinera gärna med en filesystemwatcher = direkt respons Bra idé, tackar för tipset!Starta en windows service från asp.net sida?
Har två tänkbara lösningar:
1) asp.net <--> webService <--> window service.
eller
2) asp.net <--> windows service.
För att spara tid lutar det åt alt. 2). Dessutom finns inte kravet/behovet av alt. 1)...än.
Har aldrig byggt en sådan lösning, men visst är det möjligt att från webbappen kontrollera (starta) en window service?
Hur löser man säkerheten, ska man låta ASPNET kontot vara det konto som kör window servicen?Sv: Starta en windows service från asp.net sida?
Dock brukar servicen gå i bakgrunden och inte påverkas av någon annan tjänst så frågan är om du inte kanske skall styra servicen via något fält i en databas eller liknande som säger "kör inte" när flaggan är x. Sv: Starta en windows service från asp.net sida?
Men som Pelle säger så kräver detta rätt så höga rättigheter vilket kan göra det litet knivigt.
En variant som i sig känns litet krystad (men kan utökas till att användas till att kontrollera även andra tjänster) är att lägga till "another level of indirection" (lösning på alla problem :-) ) enligt följande:
Du gör en till service (vi kallar den ServiceControllerService) som ligger och kollar i en databas/fil/något annat där den får information om den skall starta/stoppa olika tjänster och gör då det då det skrivs till den. Här är det då inlagt en flagga för din service (vi kallar den MyService) som gör att om den flaggan är satt så skall tjänsten vara igång och annars så skall den stoppas.
Din ASP.NET-sida sätter flaggan som då resulterar i att din ServiceControllerService startar eller stoppar din MyService.
Poängen med denna omväg är att vi fortfarande kan köra ASP.NET med relativt låga rättigheter. Det är inte speciellt mycket mera kod som skall skrivas men däremot så blir deployment en aning krångligare men det kan det nog vara värt för att få en säkrare lösning.
Frågan sedan om vilket konto som skall köra din MyService hör egentligen inte hit. MyService skall köra med ett sådant konto så att den har minimala rättigheter för att utföra sin uppgift. Att den sedan kan startas vias ASP.NET hör inte hit.
/AndreasSv:Starta en windows service från asp.net sida?
Kommer använda en form av "flaggvarianten" där servicen checkar av en XML-fil. Det är inte en sån tidskritisk lösning så det kommer räcka gott med att servicen kollar av innehållet i XML-filen 1 gång per minut.Sv: Starta en windows service från asp.net sida?
Sv:Starta en windows service från asp.net sida?
Kände inte till FileSystemWatcher klassen sen tidigare.
Fungerar väldigt smidigt...