SharePoint-Fehler: Der server hat nicht zulassen, dass Nachrichten, die größer als 2097152 bytes
Habe ich web-service, zeigen Sie auf sharepoint 2013 Office 365. Ich benutze das client-Objekt-Modell. Ich bin versucht, zu aktualisieren der xml-Datei, welche 4 Anlagen in ihm. Wenn ich das mache, wenn ich große binäre Daten in der xml-Datei bekomme ich folgende Fehlermeldung :
Nachricht
In der request-message ist zu groß. Der server lässt nicht zu Nachrichten
größer als 2097152 bytes.
Ich weiß, ich bin wahrscheinlich zu haben, Sie zu trennen die Anlagen aus der xml-Datei aber derzeit mein infopath Formular speichert Sie dort. Gibt es eine Möglichkeit, ich kann erhöhen die Anfrage Länge oder vielleicht chunk zu sparen, oder so etwas. Ich wirklich nur das ändern eines Knoten-und es wird nicht funktionieren, es sei denn, ich update die xml-Datei. Danke . - Code Unten.
Mein Code:
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();
- Ich vermied das Größe Problem, indem Sie die Datei Speichern Binäre Direct hier ist ein gutes Beispiel dass es erfolgreich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
SharePoint hat seine eigenen Grenzen für CSOM. Leider werden diese Grenzen nicht in der Zentraladministration konfiguriert und kann auch nicht eingestellt werden, mit CSOM aus offensichtlichen Gründen.
Beim googlen für das Problem, meistens eine Lösung ist gegeben durch die Einstellung der
ClientRequestServiceSettings.MaxReceivedMessageSize
- Eigenschaft auf die gewünschte Größe.Rufen Sie das folgende PowerShell-Skript von SharePoint Management Shell :
Dies wird setzen Sie das limit auf 200 MB.
Jedoch in SharePoint 2013 Microsoft offenbar noch eine andere Konfiguration, die Einstellung auch begrenzen die Menge der Daten, die der server verarbeiten müssen, von einem CSOM Anfrage (Warum würde jemand so konfigurieren, das man anders ist mir schleierhaft...). Nach der Lektüre ein sehr, sehr langer SharePoint-Protokolldatei und Crawlen durch einige zerlegt SharePoint server-code, fand ich, dass dieser parameter können eingestellt werden über die Eigenschaft
ClientRequestServiceSettings.MaxParseMessageSize
.Sind wir nun mit dem folgenden Skript mit SharePoint 2013 und es funktioniert Super:
Hoffe das spart einigen Leuten Kopfschmerzen!
Ich habe gerade stieß dieses Problem in SharePoint 2013 und nach einem Blick durch die docs heißt es:
Aber wenn Sie die
ContentStream
Eigenschaft, nicht auf das gleiche Dokument Größe zu begrenzen. Die Dokumentation besagt:Gibt es einige andere Optionen, die detailliert in der Dokumentation, aber das wird hoffentlich anderen Menschen helfen, die Probleme haben sehr gleichen problem.