簡體   English   中英

我可以在不使用admin用戶作為應用程序池標識的情況下使用Microsoft.Web.Administration中的ServerManager嗎?

[英]Can I use ServerManager from Microsoft.Web.Administration without admin user as an application pool identity

我想使用Microsoft.Web.Administration.dll中的ServerManager對象讀取應用程序池的某些設置。 問題是,僅當應用程序池的身份是具有管理員特權的Windows用戶時,它才起作用。 否則,我將獲得UnauthorizedAccessException- 文件名:redirection.config;。 錯誤:由於權限不足而無法讀取配置文件 關於此問題是否有任何解決方法。 我的代碼如下:

        ServerManager manager = new ServerManager();
        string currentSiteName = System.Web.Hosting.HostingEnvironment.SiteName;
        Site currentSite = manager.Sites[currentSiteName];
        string appVirtaulPath = HttpRuntime.AppDomainAppVirtualPath;

        string appPoolName = string.Empty;
        foreach (Application app in currentSite.Applications)
        {
            string appPath = app.Path;
            if (appPath == appVirtaulPath)
            {
                appPoolName = app.ApplicationPoolName;
            }
        }

        ApplicationPool currentAppPool = manager.ApplicationPools[appPoolName];

謝謝!

不可以,沒有解決方法可以讀取配置文件而不會引起很大的安全隱患。 你想達到什么目的?

如果讀取配置設置,則可以在同一DLL中使用API​​,該API將為您提供對該站點設置的只讀配置訪問權限,例如,僅讀取該站點的web.config或applicationHost.config中的值,而不讀取該站點的加密值(例如密碼)。 該API稱為WebConfigurationManager,並具有一個稱為GetSection的靜態方法,例如WebConfigurationManager.GetSection(“ system.webServer / defaultDocument”)

請參閱: https : //msdn.microsoft.com/zh-cn/library/microsoft.web.administration.webconfigurationmanager.getsection.aspx

但是,無法通過該API讀取多個設置(即用於啟動進程w3wp.exe的所有設置)。 簡短說明:不幸的是,出於安全原因,無法從工作進程中讀取許多設置。 您可以使用服務器變量來讀取某些內容,例如Request.ServerVariables [“ APP_POOL_ID”])或Request.ServerVariables [“ APP_POOL_CONFIG”])。 當然,位數可以計算出指針的大小(4或8),也可以使用環境變量(例如PROCESSOR_ARCHITECTURE)

更長的故事 :出於安全考慮,在IIS中,我們將applicationHost.config文件分割成較小的應用程序pool.config文件(默認情況下位於C:\\ inetpub \\ temp \\ appPools),出於安全原因將它們隔離,即使不信任的代碼將在進程(w3wp.exe)中運行,以嘗試竊取/讀取其他站點的設置,這在物理上是不可能的。 您可以打開文件並查看其中的設置,然后閱讀這些設置。 您會注意到appPools部分完全丟失了,因為WAS僅將其用於啟動w3wp.exe。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM