我正在使用SharePoint 2010,并且遇到问题。 有一个功能负责webparts - 它的范围是web。需要更新已经创建的webparts的一些属性,例如 - title。Sharepoint - 升级webpart属性
因此,我重写了FeatureUpgrading事件并将自定义升级操作添加到功能清单中 - 这里没有问题。 在这个功能接收器中,我计划有一个代码,用于获取需要的页面的文件,检查它,遍历它上的所有Web部件,更改属性,然后返回页面。 问题是,我的所有Web部件都显示为ErrorWebPart带空标题。顺便说一句,如果我在FeatureDeactivating事件中使用相同的代码 - 一切正常。 我注意到的唯一区别 - 在featureupgrading HttpContext.Current中为null。所以我手动填充它,但它没有帮助。 当用谷歌搜索时,唯一的两个建议是:填充HttpContext并确保带有webparts的库位于GAC中。两种情况都是在我的情况下完成的。
从FeatureUpgrading示例代码是正确的:
SPUtility.ValidateFormDigest();
web.AllowUnsafeUpdates = true;
var request = new HttpRequest("", web.Url, "");
HttpContext.Current = new HttpContext(request, new HttpResponse(new StringWriter()));
HttpContext.Current.Items["HttpHandlerSPWeb"] = web;
var fileUrl = web.Url + "/pages/sample.aspx";
var file = web.GetFile(fileUrl);
if (file.CheckOutType == SPFile.SPCheckOutType.None)
{
file.CheckOut();
}
using (var webPartsManager = file.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
foreach (WebPart webPart in webPartsManager.WebParts)
{
Console.WriteLine(webPart.GetType().ToString());
}
}
file.CheckIn("System update");
希望得到任何帮助。也许有一些我错过了或有另一种变种来完成描述的任务?
问候。
如果您尝试从Visual Studio中收回项目,重建并重新部署,会发生什么情况? – user1211929
以前我试过干净的安装在同一台机器上,结果和升级一样。 – sleepwalker