Как вернуть ссылку на интерфейс из контракта WCF? - PullRequest
1 голос
/ 14 июля 2009

У меня есть сервис WCF. Я могу вернуть конкретный класс без проблем, но возврат ссылки на интерфейс вызывает следующую проблему.

Произошло исключение CommunicationException «Соединение с сокетом было прервано. Это может быть вызвано ошибкой при обработке вашего сообщения или превышением тайм-аута приема удаленным хостом, или проблемой базового сетевого ресурса. Тайм-аут локального сокета был '00: 00: 59.2030000 '." *

Это происходит, когда я пытаюсь получить экземпляр класса из службы WCF:

//create the connection
ChannelFactory<IService> _ChannelFactory = new ChannelFactory<IService>(_EndpointName);
IService _ServiceProxy = _ChannelFactory.CreateChannel();

//communication exception thrown here
ITestInterface okcomputer = _ServiceProxy.GetTest();

IService и ITestInterface имеют все обычные атрибуты OperationContract и тому подобное. Служба имеет атрибут: [ServiceBehavior (InstanceContextMode = InstanceContextMode.Single)]

кроме этого, классы и интерфейсы не являются чем-то особенным.

Я чувствую, что есть какой-то особый трюк для возврата интерфейса класса из интерфейса WCF, иначе у меня не было бы этой проблемы. В чем трюк?

1 Ответ

2 голосов
/ 14 июля 2009

Вы не можете вернуть интерфейс, никогда. Как бы это было сериализовано?

Интерфейсы о поведении. Поведение не сериализовано, только данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...