イベント受信側からweb.configにモジュールを追加しようとしています。私はSPWebConfigModification
を使っています。 WebApp(webApp.Update())を更新すると、次のエラーがスローされます。"web.configファイルに指定されたノードが見つかりませんでした" - プログラムでモジュールを追加しようとするとエラーが発生します
指定されたノード "configuration/system.webserver/modules"がweb.configファイルに見つかりませんでした。
しかし、そのノードは必ずweb configに存在します(また、かなり共通のノードです)。なぜこれが失敗するのか? web.config
修飾のタイプがEnsureChildNode
であれば、Name
プロパティは、ノードの複製が追加されないことを保証するために、一意(Path
プロパティによって識別される)は、親ノードの下のノードを識別するXPath表現を含まなければならない
SPSite currentSite = GetCurrentSite(properties);
currentSite.AllowUnsafeUpdates = true;
SPWebApplication webApp = currentSite.WebApplication;
SPWebConfigModification modification = new SPWebConfigModification();
modification.Path = @"configuration/system.webServer/modules";
modification.Name = "ErrorRedirectModule";
modification.Sequence = 0;
modification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
modification.Value = "<add name=\"ErrorRedirectModule2\" type=\"Tools.ErrorHttpModule, Tools, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6e907fc34eb70f91\" /> ";
SPSecurity.RunWithElevatedPrivileges(delegate()
{
webApp.WebConfigModifications.Add(modification);
webApp.Update();
webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
});