我有指向 sharepoint 2013 Office 365 的 Web 服务。我使用客户端对象模型。我正在尝试更新其中存储 4 个附件的 xml 文件。当我在 xml 文件中有大量二进制数据时执行此操作时,会出现以下错误:
信息
请求消息太大。服务器不允许大于 2097152 字节的消息。
我意识到我可能不得不将附件与 xml 文件分开,但目前我的 infopath 表单将它们存储在那里。有没有办法可以增加请求的长度,或者可以节省一些东西。我真的只是修改了一个节点,除非我更新 xml,否则它将无法工作。谢谢 。代码如下。
我的代码:
ListItem docReq = GetDocRequestLight(docRequestID, businessID);
string fPath = (string)docReq["FileRef"];
using (FileInformation fInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctx, fPath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fInfo.Stream);
XmlNamespaceManager xmlNameSpaceMgr = new XmlNamespaceManager(xmlDoc.NameTable);
xmlNameSpaceMgr.AddNamespace("my", DocReqXmlNameSpace);
// Get Parent Node
XmlNode node = xmlDoc.SelectSingleNode(GetXPathFromItemKey(velmaKey), xmlNameSpaceMgr);
DateTime outDate;
bool outBool;
if (DateTime.TryParse(newValue, out outDate))
node.InnerText = outDate.ToString("yyyy-MM-dd");
if (Boolean.TryParse(newValue, out outBool))
node.InnerText = newValue;
// Update Statuses
XmlNode statusIDNode = xmlDoc.SelectSingleNode(DocReqStatusIDFieldXPath, xmlNameSpaceMgr);
statusIDNode.InnerText = updatedStatus.ID.ToString();
XmlNode statusNode = xmlDoc.SelectSingleNode(DocReqStatusFieldXPath, xmlNameSpaceMgr);
statusNode.InnerText = updatedStatus.Name.ToString();
// Save File
docReq.File.SaveBinary(new FileSaveBinaryInformation()
{
Content = Encoding.UTF8.GetBytes(xmlDoc.OuterXml),
});
ctx.ExecuteQuery();