Я использую ajax для вызова веб-службы, которая обновляет список sharepoint.Ошибка при обновлении элемента списка Sharepoint при вызове из веб-службы
Он работает, когда я звоню код из модульных тестов, но запуск кода в браузере вызывает исключение:
System.InvalidOperationException: Операция недопустима из-за текущее состояние объекта. в Microsoft.SharePoint.WebControls.SPControl.SPWebEnsureSPControl (HttpContext контекст) в Microsoft.SharePoint.WebControls.SPControl.GetContextWeb (HttpContext контекст) в Microsoft.SharePoint.SPContext.get_Current() в Microsoft.SharePoint.SPListItem.AddOrUpdateItem (Boolean, Boolean Badd bSystem, Boolean, Boolean bPreserveItemVersion bNoVersion, Boolean, Boolean bMigration bPublish, Boolean, Boolean bCheckOut bCheckin, Guid newGuidOnAdd, Int32 & ulID, объект & objAttachmentNames, объект & objAttachmentContents, булевы suppressAfterEvents) в Microsoft.SharePoint.SPListItem .UpdateInternal (Boolean bSystem, Boolean bPreserveItemVersion, Guid newGuidOnAdd, Boolean bMigration, Boolean bPublish, Boolean bNoVersion, Boolean bCheckOut, Bo Олин bCheckin, булевы suppressAfterEvents) в Microsoft.SharePoint.SPListItem.Update()
Мой код для обновления элемента списка:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(siteURL))
{
using (SPWeb web = site.OpenWeb(path))
{
SPList userProfile = web.Lists[userList];
SPQuery qry = new SPQuery
{
Query =
"<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" +
accountName +
"</Value></Eq></Where><ViewFields><FieldRef Name='ID' /><FieldRef Name='Title' /><FieldRef Name='LastUpdated' /><FieldRef Name='Reason' /></ViewFields>"
};
SPListItemCollection spListItemCollection = userProfile.GetItems(qry);
if (spListItemCollection.Count == 1)
{
//edit user
SPListItem item = spListItemCollection[0];
item["Updated"] = DateTime.Now;
item["Reason"] = updateReason;
item.Update();
}
}
}
});
Она ошибки на item.Update();
Когда вы запускаете модульный тест, выполняется ли он под теми же учетными данными, что и веб-служба? Интересно, это проблема безопасности. – CBono
Он использует те же учетные данные для обоих. –