Do you happen to have  a client the performs the upload with the image culprit? 
 If not, I can write one.

On Oct 12, 2010, at 1:28 PM, João Bragança wrote:

> Here's a repo of the bug. Thanks again for taking a look!
> 
> 
> 
> 
> 
> ---------- Forwarded message ----------
> From: Craig Neuwirt <[email protected]>
> Date: Oct 12, 11:00 am
> Subject: Wcf Facility, DefaultBinding and Quota Exceeded
> To: Castle Project Users
> 
> 
> Any chance you can zip me a subset of your app so I can run it locally
> and try and find a solution for you? Just enough to demonstrate the i
> 
> On Oct 12, 2010, at 11:24 AM, João Bragança wrote:
> 
> 
> 
> 
> 
> 
> 
> > Craig,
> 
> > In OnOpening the serviceHost doesn't have any bindings. I tried it in
> > OnOpened but I got the same error.
> 
> > On Oct 12, 8:06 am, Craig Neuwirt <[email protected]> wrote:
> >> Good question.  WCF makes it a real pain to manipulate the quota stuff.
> 
> >> I am not sure the best way to handle this, but this might work for you
> 
> >> create
> 
> >> public class AdjustQuotasBehavior : AbstractServiceHostAware
> >> {
> >>     protected override Opening(ServiceHost serviceHost)
> >>     {
> >>         foreach (var endpoint in serviceHost.Description.Endpoints)
> >>         {
> >>             var binding = endpoint.Binding as BasicHttpBinding;
> >>             if (binding != null)
> >>             {
> >>                    binding.ReaderQuotas.MaxArrayLength = FIVE_MEGABYTES;
> >>                   // Do same for other
> >>             }
> >>         }
> >>     }
> 
> >> }
> 
> >> And register this component in container
> 
> >> container.Register(Component.For< AdjustQuotasBehavior>())
> 
> >> I have never tried this though.  I could add service binding inference 
> >> from base address like I did with clients, but this would only work for 3.5
> >> since I used the default endpoint support out of the box for WCF 4.0
> 
> >> Let me know how this goes and we'll find another way if this doesn't work
> 
> >> good luck,
> >>   craig
> 
> >> On Oct 12, 2010, at 9:38 AM, João Bragança wrote:
> 
> >>> What is the simplest way to override this? I really don't want to
> >>> configure all the endpoints by hand if I can avoid it.
> 
> >>> On Oct 12, 6:34 am, Craig Neuwirt <[email protected]> wrote:
> >>>> If I recall, the DefaultBinding stuff comes into play when you specify 
> >>>> endpoints without bindings.  I think in your case, the default endpoint 
> >>>> logic is getting applied which is based on the base address and not the 
> >>>> default binding.
> 
> >>>> On Oct 11, 2010, at 7:23 PM, João Bragança wrote:
> 
> >>>>> I have a WCF service where I need to upload images. I am configuring
> >>>>> it like so:
> 
> >>>>>    public class WcfServicesInstaller : IWindsorInstaller
> >>>>>    {
> >>>>>            private const int FIVE_MEGABYTES = 1024*1024*5;
> 
> >>>>>            private const string SERVICE_SUFFIX = "Service";
> 
> >>>>>            #region IWindsorInstaller Members
> 
> >>>>>            public void Install(IWindsorContainer container, 
> >>>>> IConfigurationStore
> >>>>> store)
> >>>>>            {
> >>>>>                    container.AddFacility<WcfFacility>(f => 
> >>>>> f.DefaultBinding = new
> >>>>> BasicHttpBinding
> >>>>>                                                                         
> >>>>>            {
> 
> >>>>> MaxReceivedMessageSize = FIVE_MEGABYTES,
> >>>>>                                                                         
> >>>>>                    // 5
> >>>>> megs,
> 
> >>>>> MaxBufferPoolSize = FIVE_MEGABYTES,
> 
> >>>>> MaxBufferSize = FIVE_MEGABYTES,
> 
> >>>>> ReaderQuotas = new XmlDictionaryReaderQuotas
> 
> >>>>>                            {
> 
> >>>>>                                    MaxArrayLength = FIVE_MEGABYTES,
> 
> >>>>>                                    MaxDepth = FIVE_MEGABYTES,
> 
> >>>>>                                    MaxStringContentLength = 
> >>>>> FIVE_MEGABYTES,
> 
> >>>>>                                    MaxNameTableCharCount = 
> >>>>> FIVE_MEGABYTES,
> 
> >>>>>                                    MaxBytesPerRead = FIVE_MEGABYTES
> 
> >>>>>                            }
> >>>>>                                                                         
> >>>>>            })
> >>>>>                            
> >>>>> .Register(AllTypes.FromAssemblyContaining<IAuthenticationService>()
> >>>>>                                            .Where(type => 
> >>>>> type.Name.EndsWith(SERVICE_SUFFIX))
> >>>>>                                            .WithService.FirstInterface()
> >>>>>                                            .Configure(r => 
> >>>>> NameService(r).LifeStyle.Transient),
> >>>>>                                      Component.For<IServiceBehavior>()
> >>>>>                                            
> >>>>> .ImplementedBy<ServiceDebugBehavior>()
> >>>>>                                            .DependsOn(new
> >>>>>                                                            {
> >>>>>                                                                    
> >>>>> IncludeExceptionDetailInFaults = true,
> >>>>>                                                                    
> >>>>> HttpHelpPageEnabled = true,
> >>>>>                                                            }),
> >>>>>                                      Component.For<IServiceBehavior>()
> >>>>>                                            
> >>>>> .ImplementedBy<ServiceMetadataBehavior>()
> >>>>>                                            .DependsOn(new
> >>>>>                                                            {
> >>>>>                                                                    
> >>>>> HttpGetEnabled = true
> >>>>>                                                            }),
> 
> >>>>> Component.For<IServiceBehavior>().ImplementedBy<UnitOfWorkBehavior>());
> >>>>>            }
> 
> >>>>>            #endregion
> 
> >>>>>            private static ComponentRegistration<object>
> >>>>> NameService(ComponentRegistration<object> registration)
> >>>>>            {
> >>>>>                    var implementation = registration.Implementation;
> >>>>>                    registration.Named(implementation.Name.Substring(0,
> >>>>> implementation.Name.Length - SERVICE_SUFFIX.Length)
> >>>>>                                            .ToLowerInvariant() + 
> >>>>> ".svc");
> >>>>>                    return registration;
> >>>>>            }
> >>>>>    }
> 
> >>>>> But when I upload one I get everyone's second favorite wcf exception:
> 
> >>>>> The formatter threw an exception while trying to deserialize the
> >>>>> message: There was an error while trying to deserialize parameter
> >>>>>http://tempuri.org/:Data. The InnerException message was 'There was an
> >>>>> error deserializing the object of type System.Byte[]. The maximum
> >>>>> array length quota (16384) has been exceeded while reading XML data.
> >>>>> This quota may be increased by changing the MaxArrayLength property on
> >>>>> the XmlDictionaryReaderQuotas object used when creating the XML
> >>>>> reader. Line 1, position 26406.
> 
> >>>>> Is the wcf facility ignoring my DefaultBinding when using the "look no
> >>>>> config" method? Or am I doing something else wrong?
> 
> >>>>> --
> >>>>> You received this message because you are subscribed to the Google 
> >>>>> Groups "Castle Project Users" group.
> >>>>> To post to this group, send email to 
> >>>>> [email protected].
> >>>>> To unsubscribe from this group, send email to 
> >>>>> [email protected].
> >>>>> For more options, visit this group 
> >>>>> athttp://groups.google.com/group/castle-project-users?hl=en.
> 
> >>> --
> >>> You received this message because you are subscribed to the Google Groups 
> >>> "Castle Project Users" group.
> >>> To post to this group, send email to 
> >>> [email protected].
> >>> To unsubscribe from this group, send email to 
> >>> [email protected].
> >>> For more options, visit this group 
> >>> athttp://groups.google.com/group/castle-project-users?hl=en.
> 
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Castle Project Users" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to 
> > [email protected].
> > For more options, visit this group 
> > athttp://groups.google.com/group/castle-project-users?hl=en.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Castle Project Users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/castle-project-users?hl=en.
> <IHateWcfConfiguration.zip>

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to