【发布时间】:2011-07-13 08:51:44
【问题描述】:
我正在尝试使用 C# 以编程方式在 IIS 中创建虚拟目录
这是代码示例
DirectoryEntry iisVDir = new DirectoryEntry("IIS://localhost/W3SVC/1/Root/main");
DirectoryEntry configVDir = iisVDir.Children.Add("config", "IIsWebVirtualDir");
configVDir.CommitChanges();
但是,当运行代码时,我在第二行收到以下错误
Exception from HRESULT: 0x8000500F
但是,当我尝试重复代码,但在 Root 文件夹下创建虚拟目录,而不是 Root/main 时,它可以工作。 main 文件夹确实存在,我可以通过 Windows 中的 IIS 管理控制台手动在其下添加一个虚拟目录。
当我通过调试器运行代码时,我发现 iisVDir DirectoryEntry 的 SchemaClassName 为 IISObject 而不是我所期望的 IISWebDirectory。我为另一个现有文件夹重复了上述代码,该文件夹是 IISWebDirectory 而不是 IISObject 并且它有效。
我知道您可以将 IISWebDirectory 更改为 IIsWebVirtualDir,但是您可以将 IISObject 更改为 IISWebDirectory ?
我在 Windows XP 上运行 IIS 5.1。
编辑:我重新创建了“主”文件夹的设置方式。
- 在 Windows 资源管理器中,创建一个名为 maintest 的新文件夹,例如,在 C:\inetpub\wwwroot 下
- 在 IIS 管理控制台中,导航到这个新文件夹,右键单击它以调出上下文菜单,并在其下创建一个新的虚拟目录,例如称为 config(我指出它到 C:\Temp 在我的情况下)
- 当尝试在新的 maintest 文件夹下创建虚拟目录时,使用上面的代码示例,maintest 文件夹似乎是一个 IISObject强>
所以,也许它是一个 IISObject 是有效的,但是我如何在它下面以编程方式创建一个虚拟目录?
【问题讨论】:
-
您是否尝试在 Google 上搜索 HRESULT 代码?显然这与 DS 架构违规有关。
-
是的,我做到了,但它并没有真正给出我正在寻找的答案,因为当父文件夹是 WebDirectory 时代码有效。只有当父级是这个 IISObject 时才会变得有趣。
-
时髦。不过,这听起来确实像是违反模式——在你不应该添加的地方添加东西——但这是相当笼统的。可能是其中一个错误,其中有与有问题的人一样多的特定解决方案......
-
当我在 IIS 中添加虚拟目录时它可以工作,因此它是创建虚拟目录的有效位置,这很奇怪。如果一切都失败了,我可以手动删除并重新添加“主”文件夹,以查看它是否使其成为正确的 IISWebDirectory,但我仍然渴望首先找到错误的原因。
-
不知何故,'main' 变成了一个 IISObject,而不是一个 IISWebDirectory……它最初是如何添加的?