SP2010 Клиентская объектная модель 3 МБ ограничение - обновление maxReceivedMessageSize не применяется - PullRequest
5 голосов
/ 29 сентября 2011

Я использую клиентскую объектную модель для взаимодействия с Sharepoint 2010. Когда я пытался загрузить документы размером более 3 МБ с помощью Client OM, он выдал ошибку Bad Request.Microsoft предлагает это , чтобы исправить проблему.Я попробовал это и обновил свойство maxReceivedMessageSize.Он работает нормально после перезапуска системы, но не применяется к работающему серверу sharepoint.

Я предполагаю, что, поскольку параметр мог быть сохранен в памяти, требуется сброс приложения, но я не могу понятьсбросить.Я попытался сбросить различные службы Sharepoint.Я попытался перезагрузить сайт Sharepoint в IIS.Ничего не помогает.

Кроме того, если я, например, установлю ограничение в 10 МБ, я смогу загрузить документы размером около 7,5 МБ.Я думаю, что это из-за дополнительных метаданных (свойства типа содержимого и т. Д.).Это правильное поведение, или мне нужно изменить что-то еще.

Буду признателен за любую помощь.

С уважением.

Ответы [ 3 ]

5 голосов
/ 16 июля 2012

Я нашел эту запись на форуме TechNet , которая помогла мне решить эту проблему:

Скажите SharePoint увеличить размер файла, выполнив следующие действия.
Ø Как администратор сайта SharePoint, получите доступ к командной консоли SharePoint 2010 с помощью
1. В меню «Пуск» выберите «Все программы».
2. Нажмите Продукты Microsoft SharePoint 2010.
3. Нажмите Командная консоль SharePoint 2010.
Ø Затем выполните команды ниже.

get-PSSnapin - Registered
Add-PSSnapin Microsoft.SharePoint.Powershell
$ws = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$ws.ClientRequestServiceSettings.MaxReceivedMessageSize = 2147483647
$ws.Update()

Скажите Asp.Net увеличить размер файла, выполнив следующие шаги.
Ø Отредактируйте все задействованные файлы web.config, добавив элемент ''.
Когда вы закончите, ваше дополнение должно выглядеть следующим образом.
Ø 2147483647 байт равен 1,99 ГБ.
<system.web>
<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="2147483647" requestLengthDiskThreshold="2147483647" executionTimeout="18000"/> </system.web>

Скажите IIS 7.0 и выше, чтобы увеличить размер файла, выполнив следующие действия.
Отредактируйте все соответствующие файлы web.config, добавив элемент ''.
Когда вы закончите, ваше дополнение должно выглядеть следующим образом.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>

Надеюсь, это поможет!

2 голосов
/ 04 декабря 2013

Это не проблема или жесткое ограничение SharePoint. Это оперативный предел загрузки, установленный для защиты инфраструктуры SharePoint. В то время как операционный лимит загрузки составляет 2 МБ, ограничение двоичной загрузки составляет 50 МБ.

В настоящее время существует 3 подхода:

  1. Как вы уже упоминали, увеличьте maxReceivedMessageSize.

  2. Используйте SaveBinaryDirect методы

    Эти методы были введены, начиная с SharePoint 2010. В основном он использует распределенное управление версиями (DAV) для выполнения запроса PUT. Используя этот подход, вы получаете ограничение загрузки двоичного файла в 50 МБ.

    Вот пример реализации подхода # 2,

    string siteURL = "https://records.contoso.com";
    
    using (var context = new Microsoft.SharePoint.Client.ClientContext(siteURL))
    {
       context.Credentials = new NetworkCredential(
          "username", 
          "password", 
          "domain");
       string filePathToUpload = "C:\test\test.txt";
       context.ExecuteQuery();
    
       using (FileStream fs = new FileStream(filePathToUpload, FileMode.Open)
       {
          string targetURL = "/testsite/test.txt";
          Microsoft.SharePoint.Client.File.SaveBinaryDirect(
             context, 
             targetURL, 
             fs, 
             true);
       }
    }
    
  3. Если вы используете SharePoint 2013 или новее, вы можете использовать REST API. Ограничение на загрузку составляет 2 ГБ.

0 голосов
/ 30 сентября 2011

по ссылке, которую вы отправили, правильный способ получить то, что вам нужно, должен быть примерно таким:

public static void IncreaseMaxReceivedMessageSize ()
{
    SPWebService contentService = SPWebService.ContentService;

    /* Must set this to -1, else, the MaxReceivedMessageSize value for
    SPWebService.ContentService.WcfServiceSettings["client.svc"] will not be used.*/
    contentService.ClientRequestServiceSettings.MaxReceivedMessageSize = -1;

    // SPWcfServiceSettings has other Properties that you can set.
    SPWcfServiceSettings csomWcfSettings = new SPWcfServiceSettings();
    csomWcfSettings.MaxReceivedMessageSize = 10485760; // 10MB
    contentService.WcfServiceSettings["client.svc"] = csomWcfSettings;

    contentService.Update();
}

Пожалуйста, покажите свой код, отредактировав свой вопрос, а также объясните, какую систему вы перезапускаете, а затем она работает, а не перезапускает или перерабатывает сайты SP, где вы утверждаете, что она не работает ...

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