Вам потребуется добавить атрибут [ServiceContract] в интерфейс ITestCallback.
[ServiceContract]
public interface ITestCallback : IPing
{
[OperationContract]
void TestCB ();
}
Класс обслуживания должен наследовать производный контракт (т. Е. ITestCallback).
public class Service1 : ITestCallback
{
...
}
Соответствующая привязка конечной точки в файле Web.config должна указывать правильный контракт (как в адресе конечной точки для «ws» ниже).
<services>
<service name="WcfService.Service1" behaviorConfiguration="WcfService.Service1Behavior">
<!-- ITestCallback needs to be the contract specified -->
<endpoint address="ws" binding="wsHttpBinding" contract="WcfService.ITestCallback">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
Это сработало для меня; надеюсь, что это работает для вас. Я не использовал svcutil, я просто сослался на ссылку на сервис в проекте.