WCF: How can I send data while gracefully closing a connection?
Posted
by mafutrct
on Stack Overflow
See other posts from Stack Overflow
or by mafutrct
Published on 2010-04-09T17:35:08Z
Indexed on
2010/04/09
17:43 UTC
Read the original article
Hit count: 433
wcf
I've got a WCF service that offers a Login method. A client is required to call this method (due to it being the only IsInitiating=true). This method should return a string that describes the success of the call in any case. If the login failed, the connection should be closed.
The issue is with the timing of the close. I'd like to send the return value, then immediately close the connection.
string Login (string name, string pass)
{
if (name != pass) {
OperationContext.Current.Channel.Close ();
return "fail";
}
else {
return "yay";
}
}
The MSDN states that calling Close
on the channel
causes an ICommunicationObject to gracefully transition from the Opened state to the Closed state. The Close method allows any unfinished work to be completed before returning. For example, finish sending any buffered messages).
This did not work for me (or my understanding is wrong), as the close is executed immediately - WCF does not wait for the Login method to finish executing and return a string but closes the connection earlier.
Therefore I assume that calling Close does not wait for the running method to finish. Now, how can I still return a value, then close?
© Stack Overflow or respective owner