ADSI 互換性ビットを使用して (引数のために既定の Web サイトを使用して) 'scriptmap' を追加すると、applicationHost.config
次の場所にあるサイトのファイルにハンドラー マッピングが追加されます。
<location path="Default Web Site">
<system.webServer>
<handlers>
<add name="AboMapperCustom-12345678" ... />
</handlers>
</system>
</location>
IIS7 マネージャーでハンドラー マッピングを削除するapplicationHost.config
と、上記のファイルとセクションからマッピングを削除する代わりにweb.config
、次のファイルがサイトのルートに追加されます。
<configuration>
<system.webServer>
<handlers>
<remove name="AboMapperCustom-12345678" />
</handlers>
</system>
</configuration>
新しいマネージドMicrosoft.Web.Administration
.NET API を使用して Web サイトの構成を取得する場合、さまざまなレベルで構成を読み取ることができます。次に例を示します。
1: applicationHost.config
APPHOST レベルで構成を読み取る
ServerManager serverManager = new ServerManager();
var site = serverManager.Sites.Where(s => s.Id == 1).SingleOrDefault();
Configuration siteConfig = serverManager.GetApplicationHostConfiguration();
ConfigurationSection handlersSection =
siteConfig.GetSection("system.webServer/handlers", site.Name);
ConfigurationElementCollection handlersCollection =
handlersSection.GetCollection();
foreach (var item in handlersCollection)
{
Console.WriteLine(item.Attributes["name"].Value);
}
上記の例では、マッピングを削除しても、ハンドラー マッピング コレクションを反復するときにリストされます。これは、アプリケーション ホスト レベルで構成を要求したためです。web.config
サイトのルート以下に存在するファイルは読み取られず、それらのハンドラーと<add/>
ディレクティブ<remove/>
は含まれません。
2: サイト (またはサイト内のサブフォルダー) に固有の構成を読み取ることができます。
ServerManager serverManager = new ServerManager();
Configuration siteConfig = serverManager.GetWebConfiguration("Default Web Site");
ConfigurationSection handlersSection =
siteConfig.GetSection("system.webServer/handlers");
ConfigurationElementCollection handlersCollection =
handlersSection.GetCollection();
foreach (var item in handlersCollection)
{
Console.WriteLine(item.Attributes["name"].Value);
}
これにより、サイト ファイルも読み取られ、 で指定されたおよびディレクティブweb.config
を説明するハンドラ マッピング リストが返されます。<add/>
<remove/>
web.config
これは、ハンドラー マッピングを表示および変更するときに、IIS7 マネージャー アプリケーションが行っていることです。(必要に応じて)web.config
サイトのルート フォルダー (またはサブフォルダー) にファイルを作成し、このレベルで必要なファイルを<add/>
追加<remove/>
して、ハンドラーを追加および削除します。
IIS6 互換レイヤーは、applicationHost.config
APPHOST レベル (上記のオプション 1) でのみ動作するように見えるため、これらの違いが見られます。
バグですか?web.config
最終的にADSIが最初から認識していなかったからかどうかはわかりません。また、MS は新しいメソッドまたはフラグを追加して、これらの「スクリプトマップ」の変更を実際に行うレベルを指定できるようにする必要があります。これは、ADSI コンポーネントを壊してテストすることを意味し、バグが発生する可能性があります。この動作は、古い IIS6 メタベースの変更をシミュレートするために存在し、applicationHost.config
実際にはメタベースに似ているため、正しいか間違っているかにかかわらず、正しいことを行っていると主張できます。