Сообщение об ошибке 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>