Dlaczego otrzymuję InvalidCastException z OperationContext.Current.GetCallbackChannel <> ()
Aby umożliwić klientom oddzwanianie aysc, muszę dodać metody Początek / Koniec do interfejsu zdefiniowanego jako kontrakt zwrotny w mojej usłudze.(Używam zestawu kontraktów ścinanych zamiast generowania klas proxy)
[ServiceContract(CallbackContract=typeof(IClient)]
interface IEngineManager
Jako pierwszy krok mamwłaśnie skopiowałem interfejs IClient ze wspólnego interfejsu do lokalnej przestrzeni nazw, bez wprowadzania żadnych innych zmian. Oczekiwałbym tego, podobnie jak interfejslogicznie tak jak w kontrakcie, WCF zezwoli na jego użycie.Jednak WCF nie lubi tego z jakiegoś powodu, dlaczego?
[ServiceContract]
public interface IClient
{
[OperationContract(Action = "ReceiveMessage",
ReplyAction = "ReceiveMessageResponse")]
void ReceiveMessage(SimMessage message);
}
//....
// this give the InvalidCastException
var client = OperationContext.Current.GetCallbackChannel<MyNameSpace.IClient>();
Jeśli jednak użyję oryginalnego interfejsu IClient ze wspólnego kontraktu, to wszystko działa!