IISホストヘッダーをプログラムでWebサイトに追加する
-
06-07-2019 - |
質問
管理ページがホストされているWebサイトにIISホストヘッダーを追加できる管理ページ(ASP.NET/C#)をセットアップしたい。これは可能ですか?
http ; identity"ホストヘッダー値、IPアドレス、およびTCPポート。解決
に関するフォーラム>
また、 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");
}
}
しかし、前述のエラーチェックを行うためにヘッダー値をループする方法がわかりません。
所属していません StackOverflow