Спрашивающий
Метод UpdateListItems выдает исключение "Доступ к закрытому потоку невозможен." при попытке обновить элемент списка

Общие обсуждения
-
Я пытаюсь обновить элемент списка, который НЕ содержит вложений, через Метод UpdateListItems.
Для обновления использую следующий код:
ListsServices.Lists listService = new ListsServices.Lists(); listService.Credentials = CredentialCache.DefaultCredentials; ServiceDBEntities db = new ServiceDBEntities(); XmlDocument xmlDoc = new XmlDocument(); XmlElement elBatch = xmlDoc.CreateElement("Batch"); elBatch.SetAttribute("OnError", "Continue"); foreach (var person in db.PersonViews) { string updateQuery = "<Method ID='1' Cmd='Update'>" + "<Field Name='ID'>" + personId + "</Field>" + "<Field Name='Title'>" + person.LastName + " " + person.FirstName + " " + person.Patronymic + "</Field>" + "<Field Name='PersonFullName'>" + person.LastName + " " + person.FirstName + " " + person.Patronymic + "</Field>" + "<Field Name='PersonID'>" + person.Id + "</Field>" + "<Field Name='EmployeeNumber'>" + person.EmployeeNumber + "</Field>" + "<Field Name='NameFirst'>" + person.FirstName + "</Field>" + "<Field Name='SecondName'>" + person.LastName + "</Field>" + "<Field Name='Patronymic'>" + person.Patronymic + "</Field>" + "<Field Name='BirthDate'>" + dateBirthday + "</Field>" + "</Method>"; elBatch.InnerXml = updateQuery; XmlNode ndReturn = listService.UpdateListItems(listName, elBatch); }
При использовании
<Method ID='1' Cmd='New'>
элементы нормально создаются. В чем может быть проблема?
- Изменено Sergey Sv 18 ноября 2015 г. 10:30
- Изменен тип Иван ПродановMicrosoft contingent staff, Moderator 26 ноября 2015 г. 6:01
18 ноября 2015 г. 9:25
Все ответы
-
Добрый день,
а чему равно personId ?
Проверьте вы точно тот элемент обновляете?
- Изменено Maxim Shusharin 18 ноября 2015 г. 10:20
18 ноября 2015 г. 10:18 -
personId получаю через GetListItems. personId точно совпадает с ID элемента в списке. Пробовал прописать:
"<Field Name='ID'>1</Field>"
элемент с этим ID точно есть. Результат тот же.
Так получаю dateBirthday
var dateBirthday = person.BirthDate != null ? person.BirthDate.Value.ToString("yyyy-MM-ddTHH:mm:ssZ") : person.BirthDate.ToString();
- Изменено Sergey Sv 18 ноября 2015 г. 11:01
18 ноября 2015 г. 10:27 -
Что в ULS логе (полный текст ошибки)?18 ноября 2015 г. 11:05
-
SOAP exception: System.ObjectDisposedException: Доступ к закрытому потоку невозможен. в System.IO.__Error.StreamIsClosed() в System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) в System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) в System.IO.StreamWriter.Dispose(Boolean disposing) в System.IO.StreamWriter.Close() в System.Xml.XmlTextWriter.Close() в Microsoft.SharePoint.SoapServer.ListDataImpl.ConstructCaml(String strListName, String strXmlData, Boolean useHarmonicaKnowledge, Boolean useVersionHistory) в Microsoft.SharePoint.SoapServer.ListDataImpl.UpdateListItems(String strListName, String strXmlData) в Microsoft.SharePoint.SoapServer.Lists.UpdateListItems(String listName, SoapXmlElement updates)18 ноября 2015 г. 11:12
-
Попробуйте Fiddler'ом отловить запрос к сервису и его ответ.18 ноября 2015 г. 11:53