c# - IIS 6 元数据库 C#
问题描述
我有一个简单的 C# 应用程序,用于安装和配置我们的 Web 服务。其中一部分涉及使用提供给安装程序的命令行参数设置应用程序池标识属性。为此,我在自定义操作中使用以下代码:
using (System.DirectoryServices.DirectoryEntry appPools = new System.DirectoryServices.DirectoryEntry("IIS://Localhost/W3SVC/AppPools"))
{
System.DirectoryServices.DirectoryEntry myAppPool = appPools.Children.Find("SomeAppPool", "IIsApplicationPool");
myAppPool.Properties["AppPoolIdentityType"].Value = 3;
myAppPool.Properties["WAMUserName"].Value = "SomeUserName";
myAppPool.Properties["WAMUserPass"].Value = "SomePassword";
myAppPool.Invoke("SetInfo", null);
myAppPool.CommitChanges();
}
我们发现在较新的机器上,COM Exception 0x80005000
除非
"IIS Metabase and IIS 6 configuration compatablility"
安装了该功能(即"Control Panel->Programs and Features->Turn Windows features on or off->Internet Information Services->Web Management Tools->IIS 6 Management Compatibility->IIS 6 Metabase and IIS 6 configuration compatibility"
必须启用),否则此代码将出错。
由于这种更新应用程序池标识的方法似乎在 IIS 6 之后已被删除,这是否意味着有一种更新或更现代的方式来更新 IIS 应用程序池的 Identity 属性?我已经对此进行了广泛的谷歌搜索,并且使用 System.DirectoryServices.DirectoryEntry 命名空间似乎是我能找到的使用 C# 以编程方式设置应用程序池标识的唯一方法。
我可以使用此代码并要求"IIS Metabase and IIS 6 configuration compatablility"
安装,但如果不推荐使用此代码以支持较新的方法,那么我宁愿只使用较新的方法。
解决方案
推荐阅读
- kotlin - 为什么我可以在 Kotlin 中使用 Observer(adapter::submitList) 而不是 Observer { adapter.submitList(it)?
- python-3.x - 模块“tensorflow”在 Colab 中没有带有 TFANN 的属性“variable_scope”
- java - 具有自定义注释的字段的 Gson 自定义序列化
- c - typedef struct变量赋值中的typedef struct在c中不起作用
- python - 在 for 循环中使用 pandas csv_read 读取 csv 文件
- python - 如何从特定索引之前的列表中找到最大的数字?
- ffmpeg - ffmpeg:加入+交叉淡入淡出5个输入文件(视频+音频)到一个输出文件
- flutter - 用户单击后退按钮后颤振重新开始
- javascript - 环境变量反应
- python-3.x - 如何使用 Python3 以高效的方式将 .csv 文件从 S-3 存储桶上传到 Redshift 作为特定模式下的新表?