我正在创建一个SharePoint特性,并在我的FeatureReceiver中尝试添加一个SPWebConfigModification。我一直在遵循this博客文章中概述的方法。
以下是我的功能接收器中的一段代码:
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
var webApp = (SPWebApplication)properties.Feature.Parent;
var debugMode = new SPWebConfigModification
{
Path = "configuration/system.web/customErrors",
Name = "mode",
Value = "Off",
Sequence = 0,
Type = SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute,
Owner = "MyWebConfigMods"
};
webApp.WebConfigModifications.Add(debugMode); // <------ Error is thrown at this line
webApp.WebService.ApplyWebConfigModifications();
webApp.Update();
}下面是在SharePoint ULS查看器中看到的来自错误的堆栈跟踪:
Feature receiver assembly 'MyCompany.SharePoint, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxx', class 'MyCompany.SharePoint.Features.WebConfig.WebConfigFeatureReceiver', method 'FeatureActivated' for feature '3a07b91c-0968-4f14-b2bc-ae0e3f109cf9' threw an exception: System.Xml.XPath.XPathException: '' is an invalid expression.
at MS.Internal.Xml.XPath.XPathScanner..ctor(String xpathExpr)
at MS.Internal.Xml.XPath.XPathParser.ParseXPathExpresion(String xpathExpresion)
at MS.Internal.Xml.XPath.QueryBuilder.Build(String query, Boolean allowVar, Boolean allowKey)
at System.Xml.XPath.XPathExpression.Compile(String xpath, IXmlNamespaceResolver nsResolver)
at System.Xml.XPath.XPathNavigator.Select(String xpath)
at System.Xml.XmlNode.SelectSingleNode(String xpath)
at Microsoft.SharePoint.Administration.SPWebConfigFileChanges.ApplyModificationsWebConfigXmlDocument(XmlDocument xdWebConfig, String filepath)
at Microsoft.SharePoint.Administration.SPWebApplication.ApplyWebConfigModifications()
at Microsoft.SharePoint.Administration.SPWebService.ApplyWebConfigModifications()
at MyCompany.SharePoint.WebConfigModificationFeatureReceiver.FeatureActivated(SPFeatureReceiverProperties properties)
at Microsoft.SharePoint.SPFeature.DoActivationCallout(Boolean fActivate, Boolean fForce)在更新期间的某处,XPath表达式中引用了一个空路径。这不在我的特写里。有什么想法吗?
发布于 2010-08-17 20:14:56
这是我们使用的代码:
SPWebApplication wappCurrent = (SPWebApplication)properties.Feature.Parent;
SPWebConfigModification modAuthorizedType = new SPWebConfigModification();
modAuthorizedType.Name = "authorizedType[@Assembly='Infowise.AssociatedTasks, Version=1.0.0.0, Culture=neutral, PublicKeyToken=23853b1f8d5855a5']";
modAuthorizedType.Owner = "Infowise.Actions";
modAuthorizedType.Path = "configuration/System.Workflow.ComponentModel.WorkflowCompiler/authorizedTypes";
modAuthorizedType.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
modAuthorizedType.Value = @"<authorizedType Assembly=""Infowise.AssociatedTasks, Version=1.0.0.0, Culture=neutral, PublicKeyToken=23853b1f8d5855a5"" Namespace=""Infowise.Sharepoint.V3.Fields.Workflow"" TypeName=""*"" Authorized=""True"" />";
wappCurrent.WebConfigModifications.Add(modAuthorizedType);
wappCurrent.Update();
wappCurrent.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();希望能有所帮助
https://stackoverflow.com/questions/3478441
复制相似问题