从Web项目设置获取网站名称

时间:2009-12-16 13:22:30

标签: visual-studio visual-studio-2008 iis

我正在为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 :(得分:0)

我结束的解决方案涉及将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