gpt4 book ai didi

sharepoint - "The specified node was not found in the web.config file"- 尝试以编程方式添加模块时出错

转载 作者:行者123 更新时间:2023-12-05 01:15:42 28 4
gpt4 key购买 nike

我尝试从事件接收器中向 web.config 添加一个模块。为此,我使用了 SPWebConfigModification。当我更新 webApp (webApp.Update()) 时,抛出以下错误:

在 web.config 文件中找不到指定的节点“configuration/system.webserver/modules”。

但该节点肯定存在于网络配置中(并且也是一个非常常见的节点)。知道为什么会失败吗?

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

最佳答案

web.config修改的类型为EnsureChildNode时,Name属性应该包含一个XPath表达式,唯一标识下的节点父节点(由 Path 属性标识)以确保不会将节点的副本添加到文件中。

换句话说,Path + Name 必须将 XPath 表达式匹配到创建的节点。

modification.Path = "configuration/system.webServer/modules";
modification.Name = "add[@name='ErrorRedirectModule2']";
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' />";

我不确定 '" 引号 - 即使在我下面链接的 MSDN 文章中也不一致。

更多信息:

关于sharepoint - "The specified node was not found in the web.config file"- 尝试以编程方式添加模块时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260111/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com