I’ve been playing with the January CTP of WCF, and I’ve encountered what seems like a pretty major setback. I’ve got an interface that takes a MessageContract and returns a MessageContract. All well and good. But then I want to use the AsyncPattern on the service side, so that my routine will get called on a different thread from the one that’s listening on the network. So I decorate the interface like so:
[ServiceContract()]
public interface IThingy
{
[OperationContract(AsyncPattern=true,Action="Signon",IsInitiating=true)]
IAsyncResult BeginSignon(ThingyRequestMessage<SignOnRequest> request, AsyncCallback cb, object state);
[OperationContract]
ThingyResponseMessage<SignOnResponse> EndSignon(IAsyncResult ar);
}
Now I get an exception at runtime, which says that I can’t mix parameters and messages for the method “EndSignon”. What it means is that if I return a MessageContract instead of a primitive type, my method has to take a MessageContract and not one or more primitive types. OK, I get that. But my EndSignon method is getting flagged because it takes an IAsyncResult (as it must according to the AsyncPattern) and returns a ThingyResponseMessage.
Does this mean I can’t use MessageContracts with the AsnycPattern? If so, LAME. If not, then what am I missing?
Powered by: newtelligence dasBlog 2.3.9074.18820
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2013, Patrick Cauldwell
E-mail