Эй, у меня есть этот симпатичный маленький кусочек кода, очень похожий на все другие версии этого метода загрузки с использованием WSS WebServices. У меня есть одна серьезная проблема - как только я загрузил файл в свой список документов и обновил элемент списка, чтобы написать комментарий / описание, файл застрял там. Я имею в виду, что этот метод не будет перезаписывать файл после того, как я его загрузил. Никто другой, похоже, еще не опубликовал эту проблему, так что ... кто-нибудь?
У меня есть другая версия метода, в которой вместо потока используется байт []. Однако та же проблема.
Примечание. Я отключил опцию «требовать проверки документов перед тем, как их можно будет редактировать» для библиотеки. Не повезло, хотя .. В библиотеке doc включены версии, хотя для каждого обновления создается основная версия.
private void UploadStream(string fullPath, Stream uploadStream)
{
WebRequest request = WebRequest.Create(fullPath);
request.Credentials = CredentialCache.DefaultCredentials; // User must have 'Contributor' access to the document library
request.Method = "PUT";
request.Headers.Add("Overwrite", "t");
byte[] buffer = new byte[4096];
using (Stream stream = request.GetRequestStream())
{
for (int i = uploadStream.Read(buffer, 0, buffer.Length); i > 0; i = uploadStream.Read(buffer, 0, buffer.Length))
{
stream.Write(buffer, 0, i);
}
}
WebResponse response = request.GetResponse(); // Upload the file
response.Close();
}
Оригинальные кредиты: http://geek.hubkey.com/2007/10/upload-file-to-sharepoint-document.html
РЕДАКТИРОВАТЬ - главное обнаружение .. когда я звоню из моего тестового проекта nUnit, он работает нормально. Кажется, что происходит сбой только тогда, когда я вызываю его из приложения WCF (nUnit работает под учетной записью пользователя, приложение WCF имеет пул приложений, запущенный под тем же пользователем - моей учетной записью, которая также имеет действительные разрешения в SharePoint).
Орехи. «Теперь, с чего начать ?!» - размышляю я про себя.