我正在尝试创建一个函数,该函数将允许用户按需重置/回收应用程序池,以便重新加载更新的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有任何见识?
答案 0 :(得分:0)
当我将应用程序池标识设置为 LocalSystem 并使用匿名身份验证->“编辑”->“使用应用程序池标识”时,它可以正常工作。
我想,如果您不想使用LocalSystem,则必须为C:\ Windows \ System32 \ inetsrv \ config文件夹和应用程序根文件夹授予特殊权限。这也会降低计算机的安全性。
Microsoft Process Monitor可以帮助您授予NTFS权限。您可以为“进程名称= w3wp.exe”和“结果=访问被拒绝”添加过滤器。
https://docs.microsoft.com/en-us/sysinternals/downloads/procmon