C# 文档上载后的Sharepoint REST集元数据
我有一个C控制台应用程序,当它完成后,最终将成为一个windows服务。目的是将500k+文档存储迁移到SharePoint 2013 注意,这是一个独立的C应用程序,将在未安装SharePoint的服务器上运行。我通过HttpClient调用使用纯REST 上载文档并设置其元数据有3个步骤: 上传文件后 e、 g.baseURL+web/+GetFolderByServerRelativeUrl'/sites+libPath+'/Files/Addurl='+filename+',overwrite=true 检索与此文档关联的列表项的详细信息获取 e、 g.baseURL+web/List/getbytitle'+docLibName+'/items?$filter=Title eq'+FileNameNoText+' 前两个步骤工作正常 更新元数据 这正是我现在失眠的原因。我似乎无法弄清楚到底应该向web服务发送什么,我尝试的任何东西都会出错。我找不到任何人试图这样做的例子;而且MS文档非常稀少 来自的MS文档说明: 下面的示例演示如何使用MERGE方法更新列表 url:http://siteurl/_-api/web/listsguid'list-GUID' 方法:邮寄 正文:{{u_元数据:{'type':'SP.List'},'Title':'newtitle'} 标题: 授权:承载+访问令牌 X-RequestDigest:表单摘要值 如果匹配:etag或* X-HTTP-Method:MERGE, 接受:application/json;odata=冗长 内容类型:application/json;odata=冗长 内容长度:帖子正文的长度 在我的应用程序中,我将查询中的类型设置为SP.Data.CertificatesItem,这是在步骤2中返回的;我正在尝试将证书类型字段设置为指定的值,而不是文档标题: 字符串体={'\uu metadata':{'type':'+spItemType+'},'CertificateType':'Medical Certificate'}; 有几个字段需要设置;我只是在这里硬编码一个字段用于测试。需要设置的字段取决于文档库的内容类型 此外,URL略有不同。在该示例中: http://siteurl/_-api/web/listsguid'list-GUID' 我有一个具体的例子,稍微匿名: http://siteurl/_-api/Web/Listsguid'cdcbef76-8bc0-4a68-9279-f6f3b6cbd3c3'/Items2 否则,我的调用与上面的示例相同 我收到错误消息: {错误:{代码:-1,Microsoft.SharePoint.Client.InvalidClientQueryException,消息:{lang:en-US,值:参数uu元数据在方法GetById中不存在。}} 我不明白我做错了什么!我在任何地方都找不到任何具体的例子 从页面:: 如果要更新文件的元数据,则必须构造一个作为列表项到达文件的端点。您可以这样做,因为每个文件夹也是一个列表,每个文件也是一个列表项。构造一个如下所示的端点:https://siteurl/_-api/web/lists/getbytitle'Documents'/items。使用REST处理列表和列表项说明了如何更新列表项的元数据 有人能提供一些见解吗 更新: 似乎X-HTTP方法设置不正确。我解决了这个问题,现在我得到:C# 文档上载后的Sharepoint REST集元数据,c#,rest,sharepoint,C#,Rest,Sharepoint,我有一个C控制台应用程序,当它完成后,最终将成为一个windows服务。目的是将500k+文档存储迁移到SharePoint 2013 注意,这是一个独立的C应用程序,将在未安装SharePoint的服务器上运行。我通过HttpClient调用使用纯REST 上载文档并设置其元数据有3个步骤: 上传文件后 e、 g.baseURL+web/+GetFolderByServerRelativeUrl'/sites+libPath+'/Files/Addurl='+filename+',overwr
{错误:{代码:-1,Microsoft.SharePoint.Client.InvalidClientQueryException,消息:{lang:en-US,value:从JSON读取器读取时发现意外的“PrimitiveValue”节点。应为“StartObject”节点。}}}}我自己在研究此问题时遇到了您的问题。我已经记录了如何使用HttpClient进行文件上传、创建、更新和检索列表项,包括那些在.NET中使用Termstore数据的列表项,而不需要JQuery 使用REST从HttpClient更新文件的示例: client=new-HttpClientnew-HttpClientHandler{UseDefaultCredentials=true}; client.BaseAddress=new System.Uriurl; client.DefaultRequestHeaders.Clear; client.DefaultRequestHeaders.AddX-RequestDigest,digest; client.DefaultRequestHeaders.AddX-HTTP-Method,合并; client.DefaultRequestHeaders.AddIF-MATCH,*; HttpContent strContent=new StringContentString.Concat{'\uu metadata':{'type':'SP.List'},'Title':',filename'}; strContent.Headers.ContentType=新的MediaTypeHeaderValueapplication/json; strContent.Headers.ContentType.Parameters.Addnew NameValueHeaderValueodata,详细; HttpResponseMessageUpdateResponse=await client.PostAsyncString.Concat_api/web/lists/GetByTitle'Project Photos'/Items,id,strContent; updateResponse.ensureAccess状态代码; 如果updateResponse.IsSuccessStatusCode {} 希望这能有所帮助
Arcan.NET请在回答问题时添加相关部分,记住链接可能过期 d和或坏了。