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 at 
> http://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