2013-01-07 8 views
11

Tôi đang sử dụng mã C# để bắt đầu và dừng phục vụ cửa sổ nhưng tôi nhận được lỗi này.System.ComponentModel.Win32Exception: Truy cập bị từ chối Lỗi

System.ComponentModel.Win32Exception: Access is denied 

Hãy giúp tôi.

Mã của tôi:

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

Bạn có chắc chắn rằng tài khoản người dùng có các quyền bắt buộc để bắt đầu dịch vụ không? Bạn có thể đăng bài theo dõi ngăn xếp không? –

+0

Xem thêm tại đây: http://stackoverflow.com/questions/6070295/starting-a-service-in-asp-net-c-with-the-right-permissions –

+0

Dấu vết ngăn xếp là System.InvalidOperationException: Không thể mở aspnet_state dịch vụ trên máy tính '.'. ---> System.ComponentModel.Win32Exception: Truy cập bị từ chối --- Kết thúc của dấu vết ngăn xếp ngoại lệ bên trong --- tại System.ServiceProcess.ServiceController.GetServiceHandle (Int32 mongAccess) tại System.ServiceProcess.ServiceController.Start (String [] args) tại System.ServiceProcess.ServiceController.Start() tại _Default.StartService (String serviceName, Int32 timeoutMilliseconds) – Mahesh

Trả lời

10

Hãy chắc chắn rằng tài khoản của bạn sắc bơi ứng dụng trên máy chủ của bạn có quyền truy cập để bắt đầu dịch vụ đó. Nó hoạt động trên ASP.NET Development Server của bạn vì nó chạy dưới tài khoản người dùng của bạn (admin) Trong cấu hình IIS mặc định, tài khoản này là dịch vụ mạng hoặc ApplicationPoolIdentity (tùy thuộc vào phiên bản IIS) và thường không thể quản lý dịch vụ.

Vì vậy, hãy thay đổi tài khoản nhóm trong Trình quản lý IIS (Hồ bơi ứng dụng/TênOfYourYourPool/Cài đặt nâng cao). Bạn có thể sử dụng tài khoản được cài sẵn hoặc sử dụng một trong các miền của bạn.

apppool

3

Chạy VS của bạn trong chế độ quản trị và phát triển tải project.Open bạn VS cmd trong quản trị mode.Give tên đúng với tên miền máy tính như domainname \ username.Hope nó sẽ làm việc.