Adición de comportamientos de operación con la instalación WCF
Frecuentes
Visto 617 veces
4
Estoy usando WCF Facility por primera vez para hospedar un par de servicios, tanto en una aplicación de consola (para facilitar la depuración) como en IIS (para producción). Los servicios utilizan un net.msmq punto final
Así es como estoy alojando el servicio en la aplicación de la consola (simplificado):
using (var host = new DefaultServiceHostFactory()
.CreateServiceHost(typeof(MyService).AssemblyQualifiedName,
new Uri[0]))
host.Open();
Y así es como se registra:
container.Register(Component.For<UserRequestService>()
.LifestylePerWcfOperation())
Lo que me gustaría hacer es agregar el siguiente comportamiento a todas las operaciones:
[OperationBehavior(TransactionScopeRequired = true,
TransactionAutoComplete = true)]
Esto es lo que intenté:
container.Register(Component.For<IOperationBehavior>()
.UsingFactoryMethod(
x => new OperationBehaviorAttribute
{
TransactionScopeRequired = true,
TransactionAutoComplete = true
}));
Pero eso resulta en una excepción:
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()
¿Alguna idea?
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas wcf castle-windsor wcffacility or haz tu propia pregunta.