![](/img/trans.png)
[英]how to use Microsoft.Web.Administration properly to start an application pool from a web page?
[英]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.