У меня есть сервис и вы можете проверить с помощью «netstat -anb», что при запуске службы он прослушивает правильный порт (8040). Договор на обслуживание содержит следующий договор:WCF Прокси-вызов не регистрируется на сервере?
[OperationContract]
bool RegisterPlayer();
сам класс обслуживания реализует контракт явно:
bool IMechService.RegisterPlayer()
{
if (P1 != null)
{
P1 = OperationContext.Current.GetCallbackChannel<IMechServiceCallback>();
return true;
}
else if (P2 != null)
{
P2 = OperationContext.Current.GetCallbackChannel<IMechServiceCallback>();
return true;
}
return false;
}
И SvcUtil генерируется прокси-сервер создает следующий метод:
public bool RegisterPlayer()
{
return base.Channel.RegisterPlayer();
}
Этот код пытается сгенерировать прокси-сервер и вызвать метод. Я пробовал как с помощью DuplexChannelFactory и SvcUtil генерируется прокси-класс, и оба дают те же результаты:
client = new MechServiceClient(new InstanceContext(this));
//client = DuplexChannelFactory<IMechService>.CreateChannel(this, new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:8040/MechService"));
client.RegisterPlayer();
выполнение кода достигает RegisterPlayer в прокси-классе, но переходит к тайм-аут, никогда не работающие RegisterPlayer на службе , К сожалению, поскольку это просто время, я не получаю никаких исключений или ошибок, чтобы указать, где искать проблемы. До сих пор я проверял, что служба запущена и, похоже, прослушивает порт 8040 с помощью «netstat -anb», и я установил, что конечная точка mex работает по назначению и публикует метаданные. Я отключил брандмауэр Windows. Я также создал отдельный тестовый проект с гораздо более простыми реализациями, чтобы проверить, что я правильно делал шаги, и более простой тестовый проект работает нормально. У меня нет идей по поводу того, что приводит к этому, и любые советы будут оценены.
Вы пробовали вести журнал сообщений: http://msdn.microsoft.com/en-us/library/ms731859.aspx –