0

我正在使用此处详述的 REST 接口 - https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ff521587(v%3Doffice.14)

作为概念证明,我正在尝试从我们的 Sharepoint 2010 内部网站访问列表中的项目并更新字段。

为此,我创建了一个连接到端点 (AccountingWorkflowsDataContext) 的 OData 服务,这是我的代码 -

var tasks = new AccountingWorkflowsDataContext(new Uri(
                    "https://mysite/_vti_bin/ListData.svc"));


tasks.Credentials = new NetworkCredential("username", "password", "domain");
var task = tasks.GLRecsTasks.Where(x => x.StatusValue != "Completed" && (x.AssignedToId == 1 || x.AssignedToId == 2)).First();

task.DueDate = DateTime.Now.AddDays(5);
tasks.UpdateObject(task);
tasks.SaveChanges();

我可以连接到列表,并且我正在选择正确的项目,并且我也在跟踪对它的更改,但是,对 SaveChanges 的调用总是失败并显示消息“处理此请求时发生错误”。内在的例外是 -

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <code></code>
  <message xml:lang="en-US">An error occurred while processing this request.</message>
</error>

有人可以对此有所了解。

4

1 回答 1

0

我必须使用托管客户端对象模型来完成此操作。

我试图检索分配给特定用户的打开的工作流任务并将其分配给不同的人,并且由于某种原因,REST 接口在重新分配期间引发了错误。

这是我使用托管客户端对象模型的代码(未准备好生产,但可以开始使用

                using (ClientContext context = new ClientContext("siteURL"))
                {
                    context.FormsAuthenticationLoginInfo = new FormsAuthenticationLoginInfo("login", "password");

                    Web web = context.Web;
                    var result = context.Web.Lists.GetByTitle("TaskListName");

                    var query = new CamlQuery()
                    {
                        ViewXml =
                            "<View><Query><Where><And><Eq><FieldRef Name='Status' /><Value Type='Text'>Not Started</Value></Eq><Eq><FieldRef Name='AssignedTo' /><Value Type='User'>UserName</Value></Eq></And></Where></Query></View>"
                    };
                    var items = result.GetItems(query);
                    context.Load(items);
                    context.ExecuteQuery();

                    foreach (var item in items)
                    {
                        item["AssignedTo"] = new FieldUserValue() { LookupId = NewUserID };
                        item.Update();
                    }

                    context.ExecuteQuery();
                }
于 2019-10-01T19:12:26.020 回答