2013-01-07 9 views
11

Używam kodu C#, aby uruchomić i zatrzymać okno służy, ale pojawia się ten błąd.System.ComponentModel.Win32Exception: odmowa dostępu Błąd

System.ComponentModel.Win32Exception: Access is denied 

Proszę mi pomóc.

mój kod:

public void StartService(string serviceName, int timeoutMilliseconds) 
    { 
     ServiceController service = new ServiceController(serviceName); 
     try 
     { 
      TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); 

      service.Start(); 
      service.WaitForStatus(ServiceControllerStatus.Running, timeout); 
      lblMessage.Text = "Service Started."; 
     } 
     catch (Exception ex) 
     { 
      //lblMessage.Text = "Error in Service Starting."; 
      lblMessage.Text = ex.ToString(); 
     } 
    } 
+1

Czy jesteś pewien, że konto użytkownika ma wymagane uprawnienia do rozpoczęcia świadczenia usługi? Czy możesz opublikować ślad stosu? –

+0

Zobacz także tutaj: http://stackoverflow.com/questions/6070295/starting-a-service-in-asp-net-c-with-right-permissions –

+0

Trace Stack jest System.InvalidOperationException: Nie można otworzyć aspnet_state usługa na komputerze ".". ---> System.ComponentModel.Win32Exception: Odmowa dostępu --- Koniec wewnętrznego śledzenia stosu wyjątków --- w System.ServiceProcess.ServiceController.GetServiceHandle (Int32 desiredAccess) w System.ServiceProcess.ServiceController.Start (String [] args) w System.ServiceProcess.ServiceController.Start() w _Default.StartService (String serviceName, Int32 timeoutMilliseconds) – Mahesh

Odpowiedz

10

Upewnij konto swoją tożsamość puli aplikacji na serwerze ma uprawnienia do uruchomienia tej usługi. Działa na serwerze ASP.NET Development Server, ponieważ działa pod kontem użytkownika (admin) W domyślnej konfiguracji IIS konto to Usługa sieciowa lub ApplicationPoolIdentity (w zależności od wersji IIS) i zazwyczaj nie może zarządzać usługami.

Należy zatem zmienić konto puli w Menedżerze usług IIS (pule aplikacji/NameOfYourYourPool/Ustawienia zaawansowane). Możesz użyć wbudowanego konta lub użyć jednej z domen.

apppool

3

Uruchom VS w trybie administratora i załadować programistę project.Open VS cmd w prawidłowej nazwy użytkownika administratora mode.Give z nazwą domeny komputer jak nazwa domeny \ username.Hope będzie działać.