Я пишу приложение winforms c # 2.0, которому нужно поместить файл XML в библиотеку документов на SharePoint.
Я хочу использовать WebService вместо использования объектной модели (здесь нет ссылки на sharepoint.dll)
В настоящее время я использую веб-сервис http://webserver/site/_vti_bin/copy.asmx.
Вот код:
byte[] xmlByteArray;
using (MemoryStream memoryStream = new MemoryStream())
{
xmlDocument.Save(memoryStream);
xmlBytes = memoryStream.ToArray();
}
string[] destinationUrlArray = new string[] {"http://webserver/site/Doclib/UploadedDocument.xml"};
FieldInformation fieldInfo = new FieldInformation();
FieldInformation[] fields = { fieldInfo };
CopyResult[] resultsArray;
using (Copy copyService = new Copy())
{
copyService.Credentials = CredentialCache.DefaultCredentials;
copyService.Url = "http://webserver/site/_vti_bin/copy.asmx";
copyService.Timeout = 600000;
uint documentId = copyService.CopyIntoItems("", destinationUrlArray, fields, xmlByteArray, out resultsArray);
}
Когда этот код запускается, я получаю единственный результат в параметре resultsArray out:
DestinationURL: "http://webserver/site/Doclib/UploadedDocument.xml"
ErrorCode: UnKnown
ErrorMessage: "Object reference not set to an instance of an object."
Из моих поисков я нашел пару возможных подсказок.
Microsoft TechNet - «copy.asmx copyintoitems будет работать только в том случае, если исходный и целевой URL-адреса находятся в одном SPWebApplication (семейство сайтов).»
Microsoft Social - "Ссылка на объект не установлена для экземпляра объекта
ошибка возникает из-за того, что SharePoint не может идентифицировать это конкретное свойство. "
Это заставляет меня поверить, что мой исходный URL должен быть установлен на что-то, но что? Это происходит с клиентской рабочей станции и не имеет исходного URL.
Любая помощь будет оценена.
спасибо,
Кит