Загрузить файл в SharePoint WSS 3.0 с помощью WebRequest PUT - PullRequest
3 голосов
/ 30 июня 2009

Эй, у меня есть этот симпатичный маленький кусочек кода, очень похожий на все другие версии этого метода загрузки с использованием 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).

Орехи. «Теперь, с чего начать ?!» - размышляю я про себя.

Ответы [ 3 ]

2 голосов
/ 20 августа 2009

решено - Я обнаружил небольшую ошибку - файл создавался в нужном месте, но путь обновления был неправильным. версии .. дох!

0 голосов
/ 01 июля 2009

Вы пытались использовать заглавную T? Обработка заголовка webdav в SharePoint вряд ли будет чувствительной к регистру, но протокол определяет заглавную букву T. О, и каков ответ? Код ошибки 412 или что-то совсем другое?

0 голосов
/ 30 июня 2009

Почему бы не использовать готовый веб-сервис SharePoint Lists.asmx? Вы найдете это в

http://SITEURL/___vti_bin/Lists.asmx

Редактировать , я проверил ссылку, и кажется, что вы звоните из коробки веб-службы Это должно быть связано с версиями. Можете ли вы проверить различные версии, которые существуют в документации doc конкретного файла? посмотреть, возможно ли это будет добавлено в качестве вспомогательной версии через службу?

...