On May 3, 2:47 pm, Craig Neuwirt <cneuw...@gmail.com> wrote: > 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
OK, how do I do that? I've seen samples for web apps, but not for Console. > > And here's how it's registered: > > > container.Register(Component.For<UserRequestService>().LifestylePerWcfOpera > > tion()) > > > 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(ServiceEndpo > > int > > endpoint, Boolean withContract, IKernel kernel, IWcfBurden burden) > > at > > Castle.Facilities.WcfIntegration.ServiceHostExtensions.Castle.Facilities.Wc > > fIntegration.IWcfExtensionVisitor.VisitEndpointExtension(IWcfEndpointExtens > > ion > > extension) > > at > > Castle.Facilities.WcfIntegration.ServiceHostExtensions.Install(ICollection` > > 1 > > extensions, IWcfBurden burden) > > at > > Castle.Facilities.WcfIntegration.AbstractServiceHostBuilder.ConfigureServic > > eHost(ServiceHost > > serviceHost, IWcfServiceModel serviceModel, ComponentModel model) > > at > > Castle.Facilities.WcfIntegration.AbstractServiceHostBuilder`1.Build(Compone > > ntModel > > model, Uri[] baseAddresses) > > at > > Castle.Facilities.WcfIntegration.WindsorServiceHostFactory`1.CreateServiceH > > ost(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. That sounds possible, but how do I do that? > > 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, OK... and how do I use that? Diego -- 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.