5

管理ページがホストされているWebサイトにIISホストヘッダーを追加できる管理ページ(ASP.NET/C#)をセットアップしたいと思います。これは可能ですか?

httpヘッダーを追加したくない-IISに手動でアクセスし、Webサイトのプロパティを表示し、[Webサイト]タブで[詳細]をクリックし、[詳細なWebサイトID]画面で新しい「ID」を使用するアクションを模倣したいホストヘッダー値、IPアドレス、およびtcpポート。

4

1 に答える 1

2

プログラムによるサイトへの別の ID の追加に関するフォーラムです RSS

また、 IIS でコードによってホスト ヘッダーを追加する方法に関する記事は次のとおりです。

次の例では、IIS の Web サイトにホスト ヘッダーを追加します。これには、ServerBindings プロパティの変更が含まれます。このプロパティに新しいサーバー バインディングを追加するために使用できる Append メソッドはありません。そのため、プロパティ全体を読み取ってから、新しいデータと共に再度追加する必要があります。これは、以下のコードで行われていることです。ServerBindings プロパティのデータ型は MULTISZ で、文字列形式は IP:Port:Hostname です。

このコード例はエラー チェックを行わないことに注意してください。すべての ServerBindings エントリが一意であることが重要であり、プログラマはこれを確認する責任があります (つまり、すべてのエントリをループして、追加しようとしているものが一意かどうかを確認する必要があります)。

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");
    }
}

しかし、前述のエラー チェックを行うためにヘッダー値をループする方法がわかりません。

于 2008-10-10T06:09:53.053 に答える