Iis 要在安装应用程序中使用的MapPath或等效程序

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

我需要检查WIX项目中安装应用程序iis自定义操作中的.config文件。用户选择一个网站并输入一个虚拟目录名。我无法通过http读取来检索配置文件,因为ASP.NET不提供配置文件


如何找到所选网站和虚拟目录的本地磁盘路径?

进一步搜索后,我使用了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进行此操作?只需在属性中捕获用户输入,然后使用标准元素(如和)在适当的网站中创建虚拟目录