Thanks for reply Jason, 
WCF binding not in play to my knowledge as this is a pure POST. I can get large sizes of data down from server but a send error 14's on anything > 64K
Shared App pool is where this site is pointed, .net 3.5 sp1 installed and IIS7

From: Jason Awbrey <[email protected]>
Date: Thu, 7 Jul 2011 10:39:53 -0400
To: Mark Handzlik <[email protected]>
Cc: "[email protected]" <[email protected]>
Subject: Re: [MonoTouch] Anyone have a hint on HttpWebRequest and 64K limit?

Have you checked the MaxReceivedMessageSize setting on your WCF binding?

What versions of IIS and .NET are you running on the server?

On Thu, Jul 7, 2011 at 9:03 AM, Mark Handzlik <[email protected]> wrote:
Have an issue with send requests from Ipads that work fine when we send under 64K size. When request goes over 64K we receive Error 400 from server. Tried all types of settings on server in web.config section
maxRequestLength="2097151"
 requestLengthDiskThreshold="400000"
Registry settings for 
MaxRequestBytes and MaxFieldLength.

Still Error 400
Would really appreciate this as users can now have to be careful to sync data often and small to have operational apps.

Below is the MT code section for client send:

            webRequest = (HttpWebRequest)WebRequest.Create(requestUri.ToString());

if (this._credentials != null)
            {
                webRequest.Credentials = this._credentials;
            }

            // Set the method type
            webRequest.Method = "POST";
            webRequest.Accept = "application/atom+xml";
            webRequest.ContentType = "application/atom+xml";
            webRequest.Timeout = 1200000;
switch (request.RequestType)
            {
                case CacheRequestType.UploadChanges:
return ProcessUploadRequest(webRequest, request);
case CacheRequestType.DownloadChanges:
                default:
                    return ProcessDownloadRequest(webRequest, request);
            }
        }

        private object ProcessUploadRequest(HttpWebRequest webRequest, CacheRequest request)
        {
            using (Stream memoryStream = new MemoryStream())
            {
                // Create a SyncWriter to write the contents
                this._syncWriter = new ODataAtomWriter(base.BaseUri);

                this._syncWriter.StartFeed(true, request.KnowledgeBlob ?? new byte[0]);

                foreach (IOfflineEntity entity in request.Changes)
                {
                    // Skip tombstones that dont have a ID element.
                    if (entity.ServiceMetadata.IsTombstone && string.IsNullOrEmpty(entity.ServiceMetadata.Id))
                    {
                        continue;
                    }

                    string tempId = null;

                    // Check to see if this is an insert. i.e ServiceMetadata.Id is null or empty
                    if (string.IsNullOrEmpty(entity.ServiceMetadata.Id))
                    {
                        if (TempIdToEntityMapping == null)
                        {
                            TempIdToEntityMapping = new Dictionary<string, IOfflineEntity>();
                        }
                        tempId = Guid.NewGuid().ToString();
                        TempIdToEntityMapping.Add(tempId, entity);
                    }

                    this._syncWriter.AddItem(entity, tempId);
                }

                this._syncWriter.WriteFeed(XmlWriter.Create(memoryStream));

                memoryStream.Flush();
                // Set the content length
                webRequest.ContentLength = memoryStream.Position;

                using (Stream requestStream = webRequest.GetRequestStream())
                {
                    CopyStreamContent(memoryStream, requestStream);

                    // Close the request stream
                    requestStream.Flush();
                    requestStream.Close();
                }
            }

            // Fire the Before request handler
            this.FirePreRequestHandler(webRequest);

            // Get the response
            
            HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();


The information contained in or attached to this electronic transmission constitutes confidential information and may be privileged and exempt from disclosure under applicable law. If you are not the intended recipient, you are on notice that any unauthorized disclosure, copying, distribution or dissemination of this information is strictly prohibited.

_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch




The information contained in or attached to this electronic transmission constitutes confidential information and may be privileged and exempt from disclosure under applicable law. If you are not the intended recipient, you are on notice that any unauthorized disclosure, copying, distribution or dissemination of this information is strictly prohibited.
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to