MapPath или эквивалент для использования в приложении установки

Мне нужно проверить файл .config в приложении установки (специальное действие iis в проекте WIX). Пользователь выбирает веб-сайт и вводит имя виртуального каталога. Я не могу прочитать http, чтобы получить файл конфигурации, поскольку ASP.NET не обслуживает файлы конфигурации.

Как найти локальный путь к выбранному веб-сайту и виртуальному каталогу?


person Marcel    schedule 22.11.2010    source источник


Ответы (2)


После дальнейших поисков я остановился на 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;
    }
person Marcel    schedule 22.11.2010

Пробовали ли вы использовать для этого стандартное WiX IIsExtension? Просто сохраните пользовательский ввод в свойстве, а затем используйте стандартные элементы, такие как iis:WebSite и iis:WebVirtualDir для создания виртуального каталога на соответствующем веб-сайте.

person Yan Sklyarenko    schedule 22.11.2010