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.

Reply via email to