Загрузить большой файл в Sharepoint с помощью Silverlight - PullRequest
2 голосов
/ 05 августа 2010

Я пытаюсь загрузить фотографию в библиотеку sharepoint. Если я использую относительно небольшой файл (370 КБ), то он работает без проблем. Но если я пытаюсь загрузить файл размером около 3 МБ, я получаю сообщение об ошибке: "Der Remoteserver hat einen Fehler zurückgegeben: NotFound." в переводе: «Удаленный сервер возвратил ошибку: NotFound.»

Я прочитал, что можно установить максимальный размер сообщения, но я не нашел способа установить такую ​​вещь в объекте ClientContext.

Это код, который я использую:

    private void UploadFileCallback(object state)
    {
        var args = (List<object>)state;
        var itemContainer = (ISharepointItemContainer)args.ElementAt(0);
        var fileInfo = (FileInfo)args.ElementAt(1);

        var sharepointList = _context.Web.Lists.GetByTitle(itemContainer.ListName);
        Microsoft.SharePoint.Client.File uploadFile;
        FileCreationInformation newFile;

        using (FileStream fs = fileInfo.OpenRead())
        {
            byte[] content = new byte[fs.Length];

            newFile = new FileCreationInformation();
            int dummy = fs.Read(content, 0, (int)fs.Length);
            newFile.Content = content;
            newFile.Url = itemContainer.AbsoluteUrl + "/" + fileInfo.Name;
            uploadFile = sharepointList.RootFolder.Files.Add(newFile);
            _context.Load(uploadFile);
        }

        _context.ExecuteQuery();

        if (FileUploadCompleted != null)
        {
            FileUploadCompleted(this, EventArgs.Empty);
        }
    }

У кого-нибудь есть идеи, как решить эту проблему?

Ответы [ 4 ]

0 голосов
/ 14 апреля 2014

Ограничение размера загрузки по умолчанию для клиентской объектной модели SharePoint составляет 2 МБ. Вы можете изменить это ограничение, изменив свойство MaxReceivedMessageSize службы.

Это можно сделать двумя способами:

  • программно - как описано в по этой ссылке - но это не будет работать в Silverlight, например

  • через PowerShell. На сервере, на котором установлен SharePoint, запустите Командная консоль SharePoint (убедитесь, что вы запускаете ее под учетной записью администратора фермы) и выполните следующие команды.

    $ ws = [Microsoft.SharePoint.Administration.SPWebService] :: ContentService $ ws.ClientRequestServiceSettings.MaxReceivedMessageSize = 52428800

    $ ws.Update ()

Это изменит ограничение загрузки на 52428800 байт - или 50 МБ. Теперь перезапустите веб-сайт, на котором размещен сайт SharePoint (или весь IIS), чтобы изменения вступили в силу.

0 голосов
/ 18 ноября 2010

По умолчанию в SharePoint максимальное ограничение на загрузку составляет 50 МБ. IIS 7 (не уверен в других версиях) имеет ограничение в 30 МБ на загрузку. Вам нужно будет добавить конфигурацию XML, предоставленную Райаном, к веб-сайту web.config вашего сайта SharePoint в IIS. Это ваш интерфейсный веб-сервер.

0 голосов
/ 06 июня 2011

Достигнутое вами ограничение связано с тем, что веб-сервис, обрабатывающий запросы клиентской объектной модели, имеет максимальный размер сообщения.Вы можете увеличить этот размер, но другое решение - использовать WebDAV для загрузки документа, это поможет, если у вас нет доступа к серверу.

В объектной модели клиента .NET есть метод File.SaveBinraryDirect () для этого, и это, вероятно, ваш лучший выбор.

Если вы использовали объектную модель клиента Silverlight, этот метод недоступен, и вам придется написать дополнительный код: см. эта статья , вторая часть.В первой части описывается, как увеличить максимальный размер сообщения.

Это должно увеличить ваш максимальный размер загрузки до установленного в Central Admin (обычно 50 МБ), как указано в других сообщениях.

0 голосов
/ 27 августа 2010

Первое, что нужно попробовать, - это перейти в раздел Управление веб-приложениями на сайте Центр администрирования для SharePoint.Выберите Общие настройки для веб-приложения, в котором вы развертываете, и увеличьте максимальный размер загрузки.

Второе, что нужно попробовать, это добавить это в ваш web.config :

<system.webServer>
   <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="52428800"/>
      </requestFiltering>
   </security>
</system.webServer>

Это позволит вам установить размер больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...