On May 3, 2012, at 12:11 PM, Diego Mijelshon wrote:

> Hello.
> 
> I'm using the WCF Facility for the first time to host a couple
> services, both in a console app (for easy debugging) and IIS (for
> production). The services use a net.msmq endpoint.
> 
> This is how I'm hosting the service in the console app (simplified):
> 
>  using (var host = new DefaultServiceHostFactory()
>                                  
> .CreateServiceHost(typeof(MyService).AssemblyQualifiedName,
> new Uri[0]))
>      host.Open();
> 

You don't need to create hosts, the facility does it for you


> And here's how it's registered:
> 
> 
> container.Register(Component.For<UserRequestService>().LifestylePerWcfOperation())
> 
> What I'd like to do is to add the following behavior to all
> operations:
> 
>  [OperationBehavior(TransactionScopeRequired = true,
> TransactionAutoComplete = true)]
> 
> Here's what I tried:
> 
>  container.Register(Component.For<IOperationBehavior>()
>                               .UsingFactoryMethod(x => new
> OperationBehaviorAttribute
>                                                              {
> 
> TransactionScopeRequired = true,
> 
> TransactionAutoComplete = true
>                                                              }));
> 
> But that results in an exception:
> 
>  System.ArgumentException: The value could not be added to the
> collection, as the collection already contains an item of the same
> type: 'System.ServiceModel.OperationBehaviorAttribute'.
>                                             This collection only
> supports one instance of each type.
>  Parameter name: item
>     at
> System.Collections.Generic.KeyedByTypeCollection`1.InsertItem(Int32
> index, TItem item)
>     at
> Castle.Facilities.WcfIntegration.Internal.WcfUtils.AddBehaviors[T]
> (IKernel kernel, WcfExtensionScope scope, KeyedByTypeCollection`1
> behaviors, IWcfBurden burden, Predicate`1 predicate)
>     at
> Castle.Facilities.WcfIntegration.WcfEndpointExtensions.Install(ServiceEndpoint
> endpoint, Boolean withContract, IKernel kernel, IWcfBurden burden)
>     at
> Castle.Facilities.WcfIntegration.ServiceHostExtensions.Castle.Facilities.WcfIntegration.IWcfExtensionVisitor.VisitEndpointExtension(IWcfEndpointExtension
> extension)
>     at
> Castle.Facilities.WcfIntegration.ServiceHostExtensions.Install(ICollection`1
> extensions, IWcfBurden burden)
>     at
> Castle.Facilities.WcfIntegration.AbstractServiceHostBuilder.ConfigureServiceHost(ServiceHost
> serviceHost, IWcfServiceModel serviceModel, ComponentModel model)
>     at
> Castle.Facilities.WcfIntegration.AbstractServiceHostBuilder`1.Build(ComponentModel
> model, Uri[] baseAddresses)
>     at
> Castle.Facilities.WcfIntegration.WindsorServiceHostFactory`1.CreateServiceHost(String
> constructorString, Uri[] baseAddresses)
>     at Program.Main()
> 
> Any ideas?

The reason this might be happening is that the OperationBehavior may be a 
default behavior that must be
first removed if you want to modify it.

> 
> Something else I'm interested in is adding basic exception logging to
> all operations. I'm already using the Logging facility for other parts
> of my project and it works well. Any pointers or samples?
> (It's worth noting that, since this uses MSMQ, all the operations are
> OneWay, and the messages are moved automatically to a retry queue on
> failure by the binding, which is OK. That's why I need a way to know
> what went wrong with a particular message)
> 

The facility has message logging support which gives you an idea it works, 


> Thanks!
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Castle Project Users" group.
> To post to this group, send email to castle-project-users@googlegroups.com.
> To unsubscribe from this group, send email to 
> castle-project-users+unsubscr...@googlegroups.com.
> 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 castle-project-users@googlegroups.com.
To unsubscribe from this group, send email to 
castle-project-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to