2012-09-12 43 views
1

我構建了一個Web應用程序,該應用程序獲取所選服務器上所有服務的列表。我在應用程序上啓用了Windows驗證。它運行正常,當我從vs2010運行,但是當我在我的本地機器IIS上部署相同的代碼時,我得到如下所示的錯誤。我也從幾個不同的用戶機器測試了網站,他們得到相同的錯誤。任何關於如何解決這個問題的想法以及我需要在IIS中使用這些設置的情況。我可以訪問所有服務器,並且測試應用程序的用戶也可以訪問這些服務器。使用Windows驗證從Web應用程序訪問服務列表

消息:Cannot open Service Control Manager on computer ''. This operation might require other privileges.

Inner Exception: System.ComponentModel.Win32Exception (0x80004005): Access is denied 

Stack Trace: at System.ServiceProcess.ServiceController.GetDataBaseHandleWithAccess(String machineName, Int32 serviceControlManaqerAccess) 
    at System.ServiceProcess.ServiceController.GetDataBaseHandleWithEnumerateAccess(String machineName) 
    at System.ServiceProcess.ServiceController.GetServicesOfType(String machineName, Int32 serviceType) 
    at System.ServiceProcess.ServiceController.GetServices(String machineName) 

回答

0

沒有更多的信息 - 這聽起來像運行應用程序沒有足夠的權限來訪問SCM應用程序池的標識。如果您正在尋找使用Web應用程序進行身份驗證的用戶的憑據,則需要使用模擬。

有幾個問題 - 你在使用模擬嗎?此外,如果您將應用程序池的標識更改爲管理員(這不是一個長期解決方案,只是一個測試),那麼是否可以解決該錯誤?

+0

是的,它解決了它,如果我使用身份或應用程序池的管理員。但基於windows auth我想這樣做。由於我在下拉菜單中顯示所有服務器,有些用戶可能有權訪問它,有些則不需要。所以這將是一個安全問題。我該如何模仿正在訪問應用程序的用戶。我只有通過應用程序的主要身份。 – user1663996

+0

看起來像這只是一個web.config設置:。更多信息位於此處:http://support.microsoft.com/kb/306158 – denvercoder9

+0

我做了更改,然後它促使我將模式更改爲集成在apppool上的Classic。執行了變更,但仍然像以前一樣失敗。我試圖用如下所示的代碼模仿,但它仍然導致相同的結果。 System.Security.Principal.WindowsImpersonationContext impersonationContext = null; ())();();();() – user1663996

相關問題