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.