지금 SharePoint 2010으로 게임하고 있는데 문제가 있습니다. 웹 파트를 담당하는 기능이 있습니다. 범위는 웹입니다. 이미 생성 된 웹 파트의 일부 속성 (예 : title)을 업데이트해야합니다.Sharepoint - webpart 속성을 업그레이드하십시오.
그래서 FeatureUpgrading 이벤트를 재정의하고 기능별 매니페스트에 맞춤 업그레이드 조치를 추가했습니다. 문제는 없습니다. 필자는 필자가 필요한 페이지로 파일을 가져와 체크 아웃하고, 모든 웹 파트를 반복하고, 속성을 변경 한 다음 페이지를 다시 체크인하는 코드를 가질 계획입니다. 문제는 모든 웹 파트가 ErrorWebPart으로 비어있는 제목으로 표시된다는 것입니다.
그런데 FeatureDeactivating 이벤트에서 동일한 코드를 사용하면 모든 것이 잘 작동합니다. featureupgrading HttpContext.Current의 유일한 차이점은 null입니다. 그래서 수동으로 채웠지 만 도움이되지 않았습니다. 인터넷 검색 중 두 가지 조언은 HttpContext를 채우고 webpart가있는 libs가 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