Showing posts with label WCF. Show all posts
Showing posts with label WCF. Show all posts

Wednesday, May 9, 2012

There was no endpoint at XXX that could accept the message

Adding the belwo tag solved my problem of uploading the file more than 4 MB of size.

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


However just for testing purpose I tried uploading file more than 20 MB of size.
The test failed :( and the new exception I got was

"There was no endpoint at XXX that could accept the message. This is often caused by an incorrect address or SOAP action"

My Service bindings was as below

<binding name="My_Binding" closeTimeout="00:10:00" openTimeout="00:10:00"
    receiveTimeout="00:10:00" sendTimeout="00:10:00" bypassProxyOnLocal="false"
    transactionFlow="false" hostNameComparisonMode="StrongWildcard"
    maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"
    textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
     <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
     <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
     <security mode="Message">
      <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
      <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
     </security>
    </binding>


Also I had <httpRuntime maxRequestLength="65536" /> in web.config

Googling through several article, finally I found a solution. Adding the below tag in my WCF Service help me to upload document more than 20 MB of size

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



An error (The request was aborted: The request was canceled.) occurred while transmitting data over the HTTP channel.

I was getting an error "An error (The request was aborted: The request was canceled.) occurred while transmitting data over the HTTP channel." when I was trying to upload / stream large file through WCF Service, the file I was using is of more than 4 MB.

When we sent small files through the service, all worked fine. However, larger files (about 4MB and higher) generated the very unhelpful http exception: (400) Bad Request. This exception occurs because the entire message is not processed.

We looked at the typical culprits of this problem like <binding> settings such as maxReceivedMessageSize and <readerQuota> values to no avail.
It turned out the real problem was not in WCF, but in IIS. HTTP communication has a size limit that you have to override if you want to send large messages to your WCF service hosted in IIS. In the config file (web.config), adjust the <httpRuntime>‘s maxRequestLength attribute to a large enough size to support your messages. The value will be an integer representing the size in Kilobytes and has about a 2GB limit. The setting looks something like this (I set mine to about 64MB):
< system.web>
       <httpRuntime maxRequestLength="65536" />
< /system.web>

If IIS is the problem, you should now be able to process messages up to the size indicated in the maxRequestLength attribute.