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 at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to