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.
