Получение имени веб-сайта из программы установки веб-проекта - PullRequest
1 голос
/ 16 декабря 2009

Я создаю проект установки для службы WCF net-tcp. Одна вещь, с которой я столкнулся, заключается в том, что мне нужно изменить «Веб-сайт-> Управление приложением-> Дополнительные настройки-> Включенные протоколы». Это также можно сделать с помощью командной строки:

%windir%\system32\inetsrv\appcmd.exe set app "[Web Site Name]/[Applicaiton Name]" /enabledProtocols:http,net.tcp 

Проблема в настраиваемом действии, я могу получить [TARGETSITE], но его значение равно "/ LM / W3SVC / 2" (у меня тоже есть [TARGETVDIR]). Вопрос в том, как я могу получить имя веб-сайта или как использовать [TARGETSITE] для настройки протоколов, включенных в приложение?

1 Ответ

0 голосов
/ 17 декабря 2009

Решение, которое я закончил, включает преобразование metabasePath в имя сайта и затем использование appcmd:

private static string GetSiteName(string metabasePath)
{
    var siteIdString = metabasePath.Substring(metabasePath.LastIndexOf("/") + 1);
    long siteId;
    long.TryParse(siteIdString, out siteId);

    if (siteId != 0)
    {
        var iisManager = new ServerManager();
        var config = iisManager.GetApplicationHostConfiguration();
        var sites = config.GetSection("system.applicationHost/sites").GetCollection();

        ConfigurationElement selectedSite = null;
        foreach (var site in sites)
        {
            if ((long)site.GetAttribute("id").Value == siteId)
                selectedSite = site;
        }

        if (selectedSite != null)
        {
            return selectedSite.GetAttribute("name").Value as string;
        }
    }

    return null;
}

Чтобы использовать это, вам нужно ссылаться:

C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll
C:\Windows\System32\inetsrv\Microsoft.Web.Management.dll
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...