我在更新讨论项目的SharePoint在线任何属性时收到此错误。文档库和自定义列表不会出现错误。错误代码是-2147024809,我的代码是这样的。
public static SBUpdatePropsResponse UpdateProps(string siteCollectionUrl,string webUrl ,SBUpdatePropsRequest updateRequest)
{
var updateResponse = new SBUpdatePropsResponse();
var clientContext = Admin.GetAuthenticatedClientContext(webUrl);
var web = clientContext.Web;
var oList = clientContext.Web.Lists.GetById(updateRequest.ListID);
var itemProps = updateRequest.ItemProperties;
var itemUserProps = updateRequest.UserTypeProperties;
var itemDateTimeProps = updateRequest.DateTimeItemProperties;
ListItem listItem = oList.GetItemById(updateRequest.DocID);
clientContext.Load(web);
clientContext.Load(listItem);
clientContext.ExecuteQuery();
try
{
//Need to create a extra dictionary to save server time against property
var itemDateTimePropsLocal = new Dictionary<string, string>();
foreach (var prop in itemDateTimeProps)
{
var dateTimeLocal = new DateTime(prop.Value, DateTimeKind.Utc);
var temp = web.RegionalSettings.TimeZone.UTCToLocalTime(dateTimeLocal);
clientContext.ExecuteQuery();
itemDateTimePropsLocal.Add(prop.Key, temp.Value.ToString());
}
foreach (var userProp in itemUserProps)
{
if (userProp.Value != null && !string.IsNullOrEmpty(userProp.Value.ToString()))
{
var uservalues = userProp.Value as int[];
//Handle for multi user property
if (uservalues.Length > 1)
{
var propValues = new List<FieldUserValue>();
foreach (var values in uservalues)
{
if (values > 0)
propValues.Add(new FieldUserValue { LookupId = values });
}
listItem[userProp.Key] = propValues.ToArray();
}
else
listItem[userProp.Key] = (new FieldUserValue { LookupId = uservalues[0] });
}
}
foreach (var prop in itemProps)
{
if (prop.Key.Equals("ContentType"))
continue;
if (prop.Value != null && !string.IsNullOrEmpty(prop.Value.ToString()) && prop.Value.GetType() != typeof(FieldUrlValue))
listItem.ParseAndSetFieldValue(prop.Key, prop.Value.ToString());
}
foreach (var prop in itemDateTimePropsLocal)
{
listItem[prop.Key] = prop.Value;
}
listItem.Update();
clientContext.ExecuteQuery();
updateResponse.IsSuccess = true;
}
catch(Exception ex)
{
Logging.LogWriteLine("Failed to update list item properties", ex);
updateResponse.IsSuccess = false;
}
}
答案 0 :(得分:0)
我在这里给出答案,以防人们通过Google搜索此SO问题标题中的错误消息来查找此问题。这个答案可能会帮助那些遇到这个奇怪错误信息的人。
当我使用服务器端代码更新日历事件时,我遇到了同样的错误。
我的代码首先添加了一个新的空列表项。此新列表项具有开始日期和结束日期的默认值。几行后,列表项字段逐个更新(类似于操作码),然后调用列表项update
。在我的情况下,我的代码没有更新开始日期并保持默认值。结束日期由我的代码更新,并使结束日期早于开始日期。调用列表项update
时,此错误将显示在我的例外日志中。
我更正了此问题并将开始日期调整为始终在结束日期之前,然后拨打update
,错误就消失了。