I have a web application which enables users to upload files. The files are then saved using a WCF service on another service. This uploading works fine until I upload a file around 4.5 MB. When I upload a file above a certain size, I get the error:
Soap Error: 413 The server is refusing to process a request because the request entity is larger than the server is willing or able to process…
This error appears in the system event log of the server on which the WCF service is running.
The solutions that I’ve found have told me to change the maxAllowedContentLength and uploadReadAheadSize settings in the applicationHost config file. However changing the maxAllowedContentLength to only created a different error if I set it to something really small and changing the uploadReadAheadSize value didn’t have any effect on the problem. Does anyone know what I have to change and where I have to change it? I’ve been looking for hours and I’m starting to get impatient :(. Thanks for the help!
EDIT:
Ok the web.config of the WCF Service located in the on the production system is as follows. This is the web.config located in the folder that the IIS Site of the WCF Web Services points to:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="SOAP" path="*.wsdl" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files (x86)\Common Files\MSSoap\Binaries\SOAPIS30.dll" resourceType="Unspecified" preCondition="bitness32" />
<add name="WSDL Mapping" path="*.wsdl" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\Common Files\MSSoap\Binaries\SOAPIS30.dll" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
The configuration on the test system is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="WSDL Mapping" path="*.wsdl" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\Common Files\MSSoap\Binaries\SOAPIS30.dll" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
As you can see, there is no mention of any content length or anything in either one of the files. I have to admit, I’m pretty stumped at this point. But like I said, I’m no expert in things IIS.
EDIT 2:
Here is the serviceModel node of my web application’s web.config:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="WsJobsSoapBinding" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://srvts01test:90/WsJobs.WSDL" binding="basicHttpBinding" bindingConfiguration="WsJobsSoapBinding" contract="JobsWs.WsJobsSoapPort" name="WsJobsSoapPort"/>
</client>
</system.serviceModel>
This is the web.config of my web application that calls the WCF service and not the web.config of the WCF service itself. Thanks again for any help 🙂
I found an article that talks about the 45KB size limit you mentioned in the chat. It includes the configuration changes that were made.
http://www.codeproject.com/Articles/166763/WCF-Streaming-Upload-Download-Files-Over-HTTP
It’s possible that your test environment has these changes made so that’s one thing to look for/consider. People sometimes don’t overwrite configuration files during deployment so you may have an old file there that just works.