【发布时间】:2012-01-26 22:59:15
【问题描述】:
我有一个 Web 应用程序,它在 IIS 虚拟应用程序下部署了两个虚拟目录。在 IIS 6 机器上,以下代码按预期创建了这些虚拟目录,但是在 IIS 7 机器上,我的虚拟应用程序下有两个其他虚拟应用程序,而不是一个虚拟应用程序下有两个虚拟目录。我尝试了以下两种方法,但都仍然创建虚拟应用程序,而不是虚拟目录。如何更改此代码以部署所需的虚拟目录,而不是不需要的虚拟应用程序?
一个:
private void AddVirtualDir(DirectoryEntry entry)
{
DirectoryEntry virtualDirectory = (DirectoryEntry)entry.Invoke("Create", "IIsWebVirtualDir", "VirtualDirectory");
virtualDirectory.InvokeSet("Path", @"VirtualPath");
virtualDirectory.InvokeSet("AppFriendlyName", "VirtualDirectory");
virtualDirectory.Properties["AccessRead"][0] = true;
virtualDirectory.Properties["AccessScript"][0] = 512;
virtualDirectory.Properties["AppIsolated"].Clear();
virtualDirectory.Properties["AppIsolated"].Add(2);
virtualDirectory.Invoke("AppCreate", false);
virtualDirectory.CommitChanges();
entry.CommitChanges();
}
两个:
private void AddVirtualDir(DirectoryEntry entry)
{
var virtualDirectory = entry.Children.Add("VirtualDirectory", "IIsWebVirtualDir");
virtualDirectory.Properties["AccessRead"][0] = true;
virtualDirectory.Properties["AccessScript"][0] = 512;
virtualDirectory.Properties["AppFriendlyName"][0] = "EditorControls";
virtualDirectory.Properties["AppIsolated"][0] = 2;
virtualDirectory.Properties["Path"][0] = Path.Combine(_INSTALLDIR, @"Kryptiq_Root\FormManagement\EditorControls");
virtualDirectory.CommitChanges();
entry.CommitChanges();
}
【问题讨论】:
-
您能否发布一张在 IIS6 中的截图(记得展开所有必要的节点),我无法确定它应该是什么样子。也给出了两个例子,你尝试过这两种不同的东西吗?
-
是的,这两种不同的东西是我尝试过的两种不同的方式。您的建议在 IIS 7 上效果很好。目前,似乎 IIS 6 没有设置我正在调查的 asp.net 扩展。
-
在与 QA 交谈时,当前的 IIS 6 问题似乎不涉及此更改的虚拟目录。创建的整个虚拟应用程序没有 .net 扩展名。我正在调查与此更改无关的配置文件的其他代码更改。