Iis 要在安装应用程序中使用的MapPath或等效程序
我需要检查WIX项目中安装应用程序iis自定义操作中的.config文件。用户选择一个网站并输入一个虚拟目录名。我无法通过http读取来检索配置文件,因为ASP.NET不提供配置文件Iis 要在安装应用程序中使用的MapPath或等效程序,iis,wix,custom-action,Iis,Wix,Custom Action,我需要检查WIX项目中安装应用程序iis自定义操作中的.config文件。用户选择一个网站并输入一个虚拟目录名。我无法通过http读取来检索配置文件,因为ASP.NET不提供配置文件 如何找到所选网站和虚拟目录的本地磁盘路径?进一步搜索后,我使用了DirectoryServices。我在这里为其他人发布我的解决方案 如果有更好的方法,请仍然张贴它 static string FindVirtualDirectoryPath(string virtualDirectoryName)
如何找到所选网站和虚拟目录的本地磁盘路径?进一步搜索后,我使用了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;
}
您是否尝试过使用标准WiX进行此操作?只需在属性中捕获用户输入,然后使用标准元素(如和)在适当的网站中创建虚拟目录