Microsoft.Web.Administration 名前空間のクラスを使用して、カスタム CGI-Exe のハンドラー マッピング (スクリプト マップ) を Internet Information Server に追加したいと考えています。(簡略化された)コードは次のとおりです。
var serverManager = ServerManager.OpenRemote(serverName);
Configuration webConfig = serverManager.GetWebConfiguration(siteName, appPath);
ConfigurationSection handlersSection = webConfig.GetSection("system.webServer/handlers");
ConfigurationElementCollection handlersCollection = handlersSection.GetCollection();
string elementName = cgiFile + " script map appHost added by ACM";
ConfigurationElement addElement = handlersCollection.CreateElement("add");
addElement["allowPathInfo"] = true;
addElement["modules"] = "CgiModule";
addElement["name"] = elementName;
addElement["path"] = cgiFile;
addElement["requireAccess"] = "Execute";
addElement["scriptProcessor"] = Path.Combine(scriptsPath, cgiFile);
addElement["verb"] = "*";
handlersCollection.Add(addElement);
serverManager.CommitChanges();
このコードは、ハンドラー マッピングを IIS のマッピング リストに追加しますが、無効としてマークされます。
[操作] ウィンドウから [機能のアクセス許可の編集] を手動で選択し、次のダイアログで [実行] アクセス許可を選択する必要があります。
ハンドラーの作成中にさまざまな構成オプションを設定するか、機能のアクセス許可をプログラムで編集することにより、ハンドラー マッピングを有効にする方法を知りたいです。
アップデート
このスクリプトの結果として作成された web.config をコピーし、上記のダイアログで実行権限を手動で追加し、結果の web.config を元のものと比較しました。
開始が次のように変更されました。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
に
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers accessPolicy="Read, Execute, Script">
ここで、accessPolicy の設定方法を調べる必要があります。しかし、これが特定のハンドラ ノードではなく、ハンドラ ノードに設定されているのはなぜですか?