【问题标题】:How to programmatically set App Pool Identity on IIS 8如何以编程方式在 IIS 8 上设置应用程序池标识
【发布时间】:2015-01-22 20:31:51
【问题描述】:

我正在运行带有 IIS 8 的 Windows Server 2012。我安装了 IIS 6 Metabase Compatibility。我一直在尝试弄清楚如何使用 .Net 4.5 更改 IIS 8 的应用程序池标识 - 我发现的所有示例都是针对 IIS 6 和 7 的。

这是我所拥有的:

public class InternetInformationServices
{
    public void SetApplicationPoolIdentity(string appPoolName, string domain, string username, string password)
    {
        try
        {
            string metabasePath = "IIS://Localhost/W3SVC/AppPools";

            DirectoryEntry myAppPool;
            DirectoryEntry apppools = new DirectoryEntry(metabasePath);
            myAppPool = apppools.Children.Find(appPoolName, "IIsApplicationPool");
            myAppPool.Invoke("AppPoolIdentityType", new Object[] { 3 });
            myAppPool.Invoke("WAMUserName", new Object[] { domain + @"\" + username });
            myAppPool.Invoke("WAMUserPass", new Object[] { password });
            myAppPool.Invoke("SetInfo", null);
            myAppPool.CommitChanges();
        }
        catch (Exception)
        {
            throw;
        }
    }
}

代码能够找到应用程序池,但只要我调用它来设置以下任何一项:

 myAppPool.Invoke("AppPoolIdentityType", new Object[] { 3 });
 myAppPool.Invoke("WAMUserName", new Object[] { domain + @"\" + username });
 myAppPool.Invoke("WAMUserPass", new Object[] { password });

我在内部异常中收到以下错误:

值不在预期范围内。

我不确定我缺少什么,或者 IIS 8 有什么不同。

【问题讨论】:

  • 你应该摆脱那个 try/catch 块。它没有任何好处

标签: c# .net iis iis-8 application-pool


【解决方案1】:

对于 iis 元数据库中的大多数内容,这是一种获取此类代码 sn-p 的方法。我们使用这个过程在我的办公室编写自动化脚本。

我将以您关于指定凭据的问题为例:

首先打开inetmgr,然后选择您的主机名,然后打开配置。

然后选择 system.applicationHost/applicationPools 配置部分并展开应用程序池集合,完成后退出窗口: 选择适当的应用程序池,将身份类型更改为特定用户并设置用户并通过。

现在点击生成脚本,不要应用更改。

最后:您想要的所有 api 优点,包括您的示例代码:

【讨论】:

  • 哦,我可能不知道我能做到这一点。感谢这个方便的技巧。
【解决方案2】:

试试这个(来自How can I change the username/password of an ApplicationPool in IIS from C#?

myAppPool .Properties["AppPoolIdentityType"].Value = 3;
myAppPool .Properties["WAMUserName"].Value = Environment.MachineName + @"\" + username;
myAppPool .Properties["WAMUserPass"].Value = password;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 2012-04-23
    • 2013-03-18
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    相关资源
    最近更新 更多