Сообщение об ошибке HTTP 413 в веб-службе SharePoint

Я знаю, что ошибка "HTTP 413 Request Entity too large" - это часто задаваемые вопросы. Но у меня есть вариант, который я не могу понять уже два дня. Я создал конечную точку службы WCF как часть готового приложения SharePoint 2013 (см. Ниже). Веб-сайт включен SSL, и я получаю ошибку 413. Я пытался увеличить maxReceivedMessageSize на сайте web.config по многим постам, связанным с этой ошибкой, а также по изменению флага на самом сайте через IIS Manager / Site / Management / Configuration Editor. Но ничего не работает. Я могу публиковать небольшие файлы без проблем. Я предполагаю, что, возможно, SharePoint делает что-то, чтобы переопределить привязку, и что мне нужно применить maxReceivedMessageSize изменить в другом месте

Контракт на обслуживание

[ServiceContract]
public interface ISharepointService
{

    [OperationContract]   
    [WebInvoke(Method = "POST", UriTemplate = "UploadFile?partner={partnerid}&location={locationid}&filename={filename}&type={type}&period={period}")]   
    void UploadFile(string partnerid, string locationid, string filename, string type, string period, Stream stream);*

web.config

<services>
  <service behaviorConfiguration="serviceBehavior" name="MyCompany.Sharepoint.MyService.SharepointServiceApp">
    <endpoint address="Sharepoint" behaviorConfiguration="webBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="MyCompany.Sharepoint.MyService.SharepointServiceApp"></endpoint>
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
  </service>
</services>
<bindings>
  <webHttpBinding>
    <binding name="webBinding" maxReceivedMessageSize="2147483647">
      <security mode="Transport">
      </security>        
    </binding>
  </webHttpBinding>
</bindings>

3 ответа

Я смог решить эту проблему, создав / изменив привязку для моей службы в SharePoint. Я сделал это, выполнив следующий скрипт powershell:

$contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService;
$contentService.ClientRequestServiceSettings.MaxReceivedMessageSize = -1
$wcfServiceSettings = New-Object Microsoft.SharePoint.Administration.SPWcfServiceSettings
$wcfServiceSettings.ReaderQuotasMaxStringContentLength = 2147483647
$wcfServiceSettings.ReaderQuotasMaxArrayLength = 2147483647
$wcfServiceSettings.ReaderQuotasMaxBytesPerRead = 2147483647
$wcfServiceSettings.MaxReceivedMessageSize = 2147483647
$wcfServiceSettings.MaxBufferSize = 2147483647
$wcfServiceSettings.ReaderQuotasMaxDepth = 2147483647
$wcfServiceSettings.ReaderQuotasMaxNameTableCharCount = 2147483647
$contentService.WcfServiceSettings["<my service name>.svc"] = $wcfServiceSettings
$contentService.Update($true)

Это фактически сделало как предложено оригинальным ответчиком. Но это решило проблему в особом случае, когда веб-служба является частью приложения SP.

Душа SylverSmyth сработала для меня.
Без создания Сервисной фабрики.
Только одна заметка: название услуги в ["<my service name>.svc"] должно быть в нижнем регистре.

Там должно быть больше конфигураций, попробуйте установить это:

<system.web>
    <httpRuntime maxRequestLength="2147483647" />
</system.web>

И добавьте это к вашей привязке:

<webHttpBinding>
    <binding name="webBinding" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647">
       <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" />
       <security mode="Transport"></security>        
    </binding>
</webHttpBinding>
Другие вопросы по тегам