IIS 6.0以编程方式 – 创建虚拟目录时出现问题而不将其设置为应用程序

所以我在程序上在IIS 6.0中创建一个虚拟目录,但是我正在关注创建虚拟目录的唯一MSDN(或其他)文档,但是我在的文档

http://msdn.microsoft.com/en-us/library/ms525598(VS.90).aspx

导致我的虚拟目录成为IIS中的应用程序。 我试图使用配置数据库属性页面:

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/cde669f1-5714-4159-af95-f334251c8cbd.mspx?mfr=true

但是在选项的大海中,我不确定我需要设置哪些属性来严格地将其规定为虚拟目录:

DirectoryEntries vdirs = site.Children; DirectoryEntry newVDir = vdirs.Add(vDirName, (className.Replace("Service", "VirtualDir"))); newVDir.Properties["Path"][0] = phyPath; newVDir.Properties["AccessScript"][0] = true; newVDir.Properties["AppFriendlyName"][0] = vDirName; newVDir.Properties["AppIsolated"][0] = "0"; newVDir.Properties["AppRoot"][0] = "/LM" + metaBaseFullPath.Substring(metaBaseFullPath.IndexOf("/", ("IIS://".Length))); newVDir.CommitChanges(); 

%systemroot%\windows\system32\inetsrvmetabase.xml文件是您最好的朋友。 如果在IIS MMC中创建虚拟目录,则可以看到需要设置的必需属性属性:

在这里,我在站点中创建了一个名为myvdir的虚拟目录,这是myvdir到metabase.xml的配置数据库配置:

  

请勿尝试设置特定于应用程序池的条目。 所以就:

 newVDir.Properties["Path"][0] = phyPath; newVDir.Properties["AccessScript"][0] = true; newVDir.CommitChanges(); 

有一段时间没有这样做,但我认为就是这样

据我所知,你不能通过属性将IIsWebVirtualDir设置为应用程序(或不是),而是通过调用它的方法。 在您的情况下,您将不得不调用“AppDelete”。

使IIsWebVirtualDir成为一个应用程序……

 newVDir.Invoke("AppCreate", 1); 

要么

 newVDir.Invoke("AppCreate2", new object[] { 0 }); 

结束一个IIsWebVirtualDir作为一个应用程序……

 newVDir.Invoke("AppDelete"); 

有关这些方法及其参数的详细信息,请参阅ADSI文档,但您必须将其中的代码示例转换为C#语法。

  • MSDN:IISApp接口
  • MSDN:IISApp2接口