C# - Append a host header by code in IIS

本文介绍如何使用C#代码向IIS中特定网站添加主机头。通过修改ServerBindings属性实现这一目标,并提供了完整的代码示例。需要注意的是,每个ServerBindings条目必须唯一。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SourceURL: http://www.gafvert.info/notes/csharp_add_host_header.htm

The following example adds a host header to a website in IIS. This involves changing the ServerBindings property. There is no Append method that can be used to append a new serverbinding to this property, so what needs to be done is read the entire property and then add it back again, together with the new data. This is what is done in the code below. The ServerBindings property's data type is MULTISZ, and the string format is IP:Port:Hostname.

Note that this example code does not do any error checking. It is important that every ServerBindings entry is unique, and you - the programmer - is responsible for checking this (which means that you need to loop thru all entries and check if what is about to be added is unique).

using System.DirectoryServices;
using System;
 
public class IISAdmin
{
    /// <summary>
    /// Adds a host header value to a specified website. WARNING: NO ERROR CHECKING IS PERFORMED IN THIS EXAMPLE. 
    /// YOU ARE RESPONSIBLE FOR THAT EVERY ENTRY IS UNIQUE
    /// </summary>
    /// <param name="hostHeader">The host header. Must be in the form IP:Port:Hostname </param>
    /// <param name="websiteID">The ID of the website the host header should be added to </param>
    public static void AddHostHeader(string hostHeader, string websiteID)
    {
        
        DirectoryEntry site = new DirectoryEntry("IIS://localhost/w3svc/" + websiteID );
        try
        {                        
            //Get everything currently in the serverbindings propery. 
            PropertyValueCollection serverBindings = site.Properties["ServerBindings"];
            
            //Add the new binding
            serverBindings.Add(hostHeader);
            
            //Create an object array and copy the content to this array
            Object [] newList = new Object[serverBindings.Count];
            serverBindings.CopyTo(newList, 0);
            
            //Write to metabase
            site.Properties["ServerBindings"].Value = newList;            
                        
            //Commit the changes
            site.CommitChanges();
                        
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        
    }
}
 
public class TestApp
{
    public static void Main(string[] args)
    {
        IISAdmin.AddHostHeader(":80:test.com", "1");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值