在IIS 10 / Windows Server 2019中以编程方式回收应用程序池

问题描述 投票:0回答:1

我正在尝试创建一个函数,该函数将允许用户按需重置/回收应用程序池,以便重新加载更新的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文件的读取权限授予以下任何/所有用户,而没有更改:

  • ASPNET
  • 网络服务
  • IUSR
  • IIS_IUSRS

任何人都对如何通过代码回收AppPool有任何见识?

iis windows-server iis-10 windows-server-2019
1个回答
0
投票

当我将应用程序池标识设置为LocalSystem并使用匿名身份验证->编辑->使用应用程序池标识时,它可以正常工作。

enter image description here

enter image description hereenter image description here

我想,如果您不想使用LocalSystem,则必须为C:\ Windows \ System32 \ inetsrv \ config文件夹和应用程序根文件夹授予特殊权限。这也会降低计算机的安全性。

Microsoft Process Monitor可以帮助您授予NTFS权限。您可以为“进程名称= w3wp.exe”和“结果=访问被拒绝”添加过滤器。

https://docs.microsoft.com/en-us/sysinternals/downloads/procmon

© www.soinside.com 2019 - 2024. All rights reserved.