我正在尝试创建一个函数,该函数将允许用户按需重置/回收应用程序池,以便重新加载更新的IIS网站设置,但是,每当尝试使用ServerManager函数时,我都会遇到权限问题。
ServerManager serverManager = new ServerManager();
ApplicationPool appPool = serverManager.ApplicationPools[site_list.SelectedValue];
if (appPool != null) {
if (appPool.State == ObjectState.Stopped) {
appPool.Start();
} else {
appPool.Recycle();
}
}
每次运行代码时,都会出现以下错误:
文件名:redirection.config错误:由于无法读取配置文件权限不足
描述:执行以下操作时发生未处理的异常当前的Web请求。请查看堆栈跟踪以获取更多信息有关错误及其在代码中起源的信息。
异常详细信息:System.UnauthorizedAccessException:文件名:redirection.config错误:由于以下原因,无法读取配置文件权限不足
ASP.NET无权访问所请求的资源。考虑向ASP.NET请求授予对资源的访问权限身份。 ASP.NET具有基本进程标识(通常是IIS 5上的{MACHINE} \ ASPNET或IIS 6和IIS 7上的网络服务,以及IIS 7.5上配置的应用程序池标识),如果该应用程序没有冒充。如果申请是通过冒充,身份将为匿名用户(通常为IUSR_MACHINENAME)或已通过身份验证的用户请求用户。
要授予ASP.NET访问文件的权限,请在“文件”中右键单击该文件在资源管理器中,选择“属性”,然后选择“安全性”选项卡。点击“添加”添加适当的用户或组。突出显示ASP.NET帐户,并选中所需访问权限的框。
我尝试将redirection.config文件的读取权限授予以下任何/所有用户,而没有更改:
任何人都对如何通过代码回收AppPool有任何见识?
当我将应用程序池标识设置为LocalSystem并使用匿名身份验证->编辑->使用应用程序池标识时,它可以正常工作。
我想,如果您不想使用LocalSystem,则必须为C:\ Windows \ System32 \ inetsrv \ config文件夹和应用程序根文件夹授予特殊权限。这也会降低计算机的安全性。
Microsoft Process Monitor可以帮助您授予NTFS权限。您可以为“进程名称= w3wp.exe”和“结果=访问被拒绝”添加过滤器。
https://docs.microsoft.com/en-us/sysinternals/downloads/procmon