On May 3, 2012, at 1:59 PM, Diego Mijelshon wrote:
> 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.
It's always the same for web app, consoles, services, ... How the host factory is used varies
container
.Register(Component.For<UserRequestService>()
.AsWcfService(new DefaultServiceModel().AddEndpoints(
WcfEndpoint.ForContract<IOperations>()
.At("<Put your endpoint url here")
)
create an operationbehavior to do it
public class MyOperationPolicy : IOperationBehavior
{
public void ApplyClientBehavior(
OperationDescription operationDescription,
ClientOperation clientOperation
)
{
var opBehavior = operationDescription.Behaviors.Find<OperationBehaviorAttribute>();
if (opBehavior != null) operationDescription.Behaviors.Remove(opBehavior);
operationDescription.Behaviors.Add(your new behavior with tx set)
}
public void ApplyDispatchBehavior(
OperationDescription operationDescription,
DispatchOperation dispatchOperation
)
{
do the same thing
}
}
and then register that behavior in container
container.Register(Component.For<IOperationBehavior>().ImplementedBy< MyOperationPolicy>()
Again, not sure if this will do it, but the error is usually caused by this
>
>
>>> 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?
Obtain the source code for the WCF Facility and you'll see a directory Behaviors/Logging which shows you how
messages can be logged
>
> Diego