gpt4 book ai didi

c# - 尝试使用 C# 在 IIS 中创建虚拟目录时引发异常 0x8000500F

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:32 28 4
gpt4 key购买 nike

我正在尝试使用 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 下,它起作用了。 ma​​in 文件夹确实存在,我可以通过 Windows 中的 IIS 管理控制台在其下手动添加一个虚拟目录。

当我通过调试器运行代码时,我发现 iisVDir DirectoryEntry 的 SchemaClassName 为 IISObject 而不是我预期的 IISWebDirectory。我为另一个现有文件夹重复了上述代码,该文件夹是 IISWebDirectory 而不是 IISObject 并且它有效。

我知道您可以将 IISWebDirectory 更改为 IIsWebVirtualDir,但是您可以将 IISObject 更改为 IISWebDirectory

我在 Windows XP 上运行 IIS 5.1。

编辑:我重新创建了“主”文件夹的设置方式。

  1. 在 Windows 资源管理器中,在 C:\inetpub\wwwroot 下创建一个名为 ma​​intest 的新文件夹
  2. 在 IIS 管理控制台中,导航到这个新文件夹,右键单击它以显示上下文菜单,并在其下创建一个新的虚拟目录,例如名为 config(我指出它到 C:\Temp 在我的例子中)
  3. 当尝试在新的 ma​​intest 文件夹下创建虚拟目录时,使用上面的代码示例,ma​​intest 文件夹似乎是一个 IISObject

所以,也许它是一个 IISObject 是有效的,但我如何以编程方式在它下面创建一个虚拟目录?

最佳答案

我在ASP.NET中就遇到过这样的情况。我对这些COM错误进行了长时间的调试,这是我前段时间看到的。

在我的例子中,当您在网站(应用程序)目录中创建这样的更改时,它会导致立即重新启动。添加此功能是为了让应用程序/网站处理最新内容,正如我当时阅读的那样。

您可以通过将目标目录移动到当前网站之外来测试和定位它,这样您就可以知道问题的根源 - 因此您需要在当前网站之外实现目标(我已经用两个网站解决了我的问题),当存储重新启动时, Controller 保持事件状态。

如果 COM 错误因将目录移到外部或等待 IIS 重新启动(10-20 秒)而过期,请告诉我。

关于c# - 尝试使用 C# 在 IIS 中创建虚拟目录时引发异常 0x8000500F,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676408/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com