标签: applicationpoolidentity

DirectoryServicesCOMException 80072020来自IIS 7.5在ApplicationPoolIdentity下运行的站点

我无法找到ASP.NET 4应用程序失败的问题,同时尝试为给定用户获取用户组.与此应用程序关联的应用程序池设置为在ApplicationPoolIdentity下运行.

例外信息

System.DirectoryServices.DirectoryServicesCOMException
HRESULT: 80072020
Message: An operations error occurred.
Extended Message: 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

    System.DirectoryServices.DirectoryEntry.Bind(Boolean) 
    System.DirectoryServices.DirectoryEntry.Bind() 
    System.DirectoryServices.DirectoryEntry.get_AdsObject() 
    System.DirectoryServices.DirectorySearcher.FindAll(Boolean) 
    System.DirectoryServices.DirectorySearcher.FindOne() 
Run Code Online (Sandbox Code Playgroud)

95%-99%的时间,此功能正常,但有时,它只是开始失败.当我将应用程序池更改为使用LocalSystem或NetworkService时,它开始工作.当我改回ApplicationPoolIdentity时,它又开始失败了.使ApplicationPoolIdentity重新启动站点的唯一方法是重新启动服务器.

我在这里找到了类似的问题,但解决方案也是重启.我想找到一个更永久的解决方案,而不是改变应用程序池的身份.

asp.net directoryservices iis-7.5 applicationpoolidentity

6
推荐指数
1
解决办法
5059
查看次数

以编程方式将IIS应用程序池标识"用户"分配给组

问题:创建新的IIS应用程序池并将其设置为使用应用程序池标识获取权限时,我不确定如何将这些标识添加到用户组(如管理员或性能计数器用户).

背景:我目前正在编写一个C#.NET库,它使用Microsoft.Web.Administration来执行以下操作:

  • 检测是否已安装IIS 7.x,如果已安装,则检测哪些组件.
  • 将IIS 7.x安装或升级到所提供的所需组件列表.
  • 通过IIS创建/管理一个或多个网站.
  • 每个网站自动创建/管理一个应用程序池

上下文是可执行安装程序将此库用于在Windows Server操作系统上自动部署Web服务器和Web站点/服务,作为更大的软件部署的一部分.到目前为止,除了需要在应用程序池/网站创建上执行的某些权限的自动化之外,所有上述内容都已实现,测试并且(大部分)功能正常.

在我安装新网站的方法中,我创建了一个新的应用程序池并强制它使用应用程序池标识:

static public void InstallSite(string name, string path, int port)
{
    Site site;
    var appPoolName = ApplicationPoolBaseName + name;

    using (var iisManager = new ServerManager())
    {
        // Set up a custom application pool for any site we run.
        if (!iisManager.ApplicationPools.Any(pool => pool.Name.Equals(appPoolName)))
        {
            iisManager.ApplicationPools.Add(appPoolName);
            iisManager.ApplicationPools[appPoolName].ManagedRuntimeVersion = "v4.0";
        }
        iisManager.CommitChanges();
    }

    // ... other code here ('site' gets initialized) ...

    using (var iisManager = new ServerManager())
    {
        // Set …
Run Code Online (Sandbox Code Playgroud)

c# permissions application-pool iis-7.5 applicationpoolidentity

6
推荐指数
2
解决办法
5682
查看次数

IIS AppPool 到 SQL Server 权限(添加 NT AUTHORITY\IUSR)

我有一个运行 Windows Server 2012 R2、IIS 8.5(包括 ClassicASP 功能)和 SQL Server 2014 Express 的新服务器版本。我想使用应用程序池标识连接到数据库。数据库设置为“Windows 身份验证模式”。

我的应用程序池标识名为activbase.net. 我在 SQL Server 中设置了一个名为的安全登录IIS AppPool\activbase.net,用户将它映射到我的数据库db_datareaderdb_datawriter访问。

但是,当我尝试从网站访问数据库时,我得到:

无法打开登录请求的数据库“ActivbaseLive”。登录失败。

我认为这足以使连接正常工作。应用程序日志(事件查看器)显示:

用户“NT AUTHORITY\IUSR”登录失败。原因:无法打开明确指定的数据库“ActivbaseLive”。[客户: ]

所以我NT AUTHORITY\IUSR同样添加到 SQL Server>Security>Logins and Databases>[ActivbaseLive]>Security>Users,这解决了问题。

我的问题如下:

  1. NT AUTHORITY\IUSR除了IIS AppPool\activbase.net登录名/用户之外,我是否还需要向我的 SQL Server 实例和数据库添加登录名/用户?
  2. 这样做是否存在安全问题?(注意:这将是一个生产环境)

谢谢,克里斯

applicationpoolidentity sql-server-2014-express iis-8.5

5
推荐指数
1
解决办法
4465
查看次数

尝试列出应用程序池或站点时 IIS 管理器冻结

我刚刚在 IIS 中针对我的用户的应用程序池身份更新了密码,使其保持最新,如下所示:

Http错误503服务不可用

但是现在,当我运行 IIS 管理器时,当我尝试列出应用程序池、列出站点或重新启动时,它会冻结。这意味着我无法返回并仔细检查我在应用程序池中输入的密码是否正确。

Windows 事件日志未显示任何错误或警告。我也尝试过重新启动电脑,但这没有帮助。

有没有人以前遇到过这种情况,或者知道可能是什么原因造成的?

我运行的是 Windows 10 和 IIS 版本 10.0.10586.0

iis application-pool iis-manager applicationpoolidentity

5
推荐指数
1
解决办法
7567
查看次数

如何从网站重新启动应用程序池,而无需将应用程序池标识设置为本地系统?

我在 .Net 中有一个应用程序,它为其他应用程序执行各种管理/配置。我需要能够停止和启动应用程序池。我已经实现了这一点,但前提是我将应用程序池作为本地系统运行(这通常被认为是一个坏主意)。

最初,我使用 Process.Start (使用适当的 ProcessStartInfo 对象)启动了 appcmd.exe,但这最终导致我的退出代码为 -1073741502,进一步的研究表明我需要使用 Windows SDK 进行调试,因为它与程序集未加载,因此我在命名空间中找到了一个似乎更简单的解决方案Microsoft.Web.Administration

我使用下面的代码,但它似乎要求运行它的 AppPool 具有本地系统的身份(否则我得到System.UnauthorizedAccessException) - 有没有一种方法可以使用权限较低的帐户启动/停止(我更喜欢使用应用程序身份) - 虽然暂时提升权限也是可以的。

    Dim serverManager As New ServerManager()
    Dim applicationPoolCollection As ApplicationPoolCollection = serverManager.ApplicationPools

    For Each applicationPool As ApplicationPool In applicationPoolCollection

        If applicationPool.Name = appPoolName Then
            applicationPool.Stop()
            applicationPool.Start()
        End If

    Next
Run Code Online (Sandbox Code Playgroud)

我已将自定义帐户设置为身份,但我无法确定该用户的最小 ACL 需要是多少。作为测试,我将用户添加到本地管理员组,但仍然得到System.UnauthorizedAccessException- 这表明我需要为用户配置特定权限,但我不确定这是什么或如何做到这一点。有人可以帮忙吗?

问题也在这里解释

.net iis-7 application-pool .net-3.5 applicationpoolidentity

4
推荐指数
1
解决办法
2971
查看次数

尝试向 IIS 7.5 中的特定应用程序池标识授予权限 - “找不到对象”

通常,我根据应用程序池标识授予文件夹访问权限,格式为:

IIS AppPool\[app_pool_name]
Run Code Online (Sandbox Code Playgroud)

在这个特定的新服务器上,当我尝试编辑文件夹的安全设置并添加该特定用户条目时,我得到了

"object IIS AppPool\XXXXXX cannot be found"
Run Code Online (Sandbox Code Playgroud)

知道这是为什么吗?我确认应用程序池已设置为ApplicationPoolIdentity.

我使用的是 IIS 7.5 和 Windows Server 2008 R2。

windows iis application-pool windows-server-2008 applicationpoolidentity

4
推荐指数
1
解决办法
2246
查看次数