Обратная совместимость WCF 3.5 до 3.0 с сервисами обратного вызова - PullRequest
0 голосов
/ 16 апреля 2010

У меня есть набор существующих служб WCF, размещенных в приложении .NET 3.0. Они используют привязки WSHttp и не имеют защиты.

Мне нужно подключиться к ним из клиента .NET 3.5. Похоже, что это нормально работает для односторонних служб, но у меня также есть некоторые службы обратного вызова (с CallbackContract и SessionMode = Required, используя WSDualHttpBinding); они не могут соединиться с таймаутом где-нибудь в коде ReliableSession.

Сервисная сторона не может быть изменена (это историческая проблема версии). Могу ли я что-то изменить на стороне клиента, чтобы это работало? (Я могу нормально подключиться к клиенту .NET 3.0, но я не буду пытаться использовать этот путь.)

The open operation did not complete within the allotted timeout of 00:00:09.9410000.
The time allotted to this operation may have been a portion of a longer timeout.
Server stack trace: 
   at System.ServiceModel.Channels.ReliableRequestor.ThrowTimeoutException()
   at System.ServiceModel.Channels.ReliableRequestor.Request(TimeSpan timeout)
   at System.ServiceModel.Channels.ClientReliableSession.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ClientReliableDuplexSessionChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

1 Ответ

1 голос
/ 19 апреля 2010

Хорошо, извините за шум. Оказывается, что проблема была на самом деле из-за сгенерированного клиентского кода; в то время у меня на локальном компьютере работала служба .NET 3.5, а на удаленной машине - служба .NET 3.0. У них разные пространства имен, и похоже, что VS собирал локальные пространства имен службы , хотя Я специально сказал ему подключаться к удаленному IP. После регенерации кода клиента, когда локальный сервер не работал, он работал нормально.

...