我需要检查安装应用程序中的.config文件(iis是WIX项目中的自定义操作)。用户选择网站并输入虚拟目录名称。我无法进行http读取以检索配置文件,因为ASP.NET不提供配置文件。
如何找到所选网站和虚拟目录的本地磁盘路径?
答案 0 :(得分:0)
进一步搜索后,我最终使用了DirectoryServices。我在这里为其他人发布我的解决方案。
如果有更好的方法,请发布。
static string FindVirtualDirectoryPath(string virtualDirectoryName)
{
return FindVirtualDirectoryPath(null, virtualDirectoryName);
}
static string FindVirtualDirectoryPath(string siteName, string virtualDirectoryName)
{
DirectoryEntry iis = new DirectoryEntry("IIS://localhost/W3SVC");
foreach (DirectoryEntry index in iis.Children)
{
if (index.SchemaClassName == "IIsWebServer")
{
int id = Convert.ToInt32(index.Name);
DirectoryEntry site = new DirectoryEntry(string.Concat("IIS://localhost/W3SVC/", id));
string iSiteName = site.Properties["ServerComment"].Value.ToString();
if (iSiteName == siteName || (string.IsNullOrEmpty(siteName) && id == 1))
{
DirectoryEntry rootVDir = new DirectoryEntry(string.Concat("IIS://localhost/W3SVC/", id, "/Root"));
foreach (DirectoryEntry vDir in rootVDir.Children)
{
if (vDir.SchemaClassName == "IIsWebVirtualDir" && vDir.Name.ToLower() == virtualDirectoryName.ToLower())
{
return vDir.Properties["Path"].Value.ToString();
}
}
}
}
}
return null;
}
答案 1 :(得分:0)
您是否尝试过使用标准WiX IIsExtension?只需捕获属性中的用户输入,然后使用iis:WebSite和iis:WebVirtualDir等标准元素在适当的网站中创建虚拟目录。