我有一个测试继承合同和回调合同的测试项目。
更新1 :我使用接口implamantations更新了所有主题
阅读本文:http://codeidol.com/csharp/wcf/Service-Contracts/Contract-Inheritance/#part-16
这是可能的,但是当我尝试它时,它会失败。
class Program
{
static void Main(string[] args)
{
ServiceHost Service_IServer = new ServiceHost(new ServiceImplemantation(), new Uri(@"net.tcp://localhost:8080/"));
Service_IServer.AddServiceEndpoint(typeof(IService), new NetTcpBinding(), "Service");
Service_IServer.Open();
ServiceHost Service_I_IP = new ServiceHost(new IPImplemantation(), new Uri(@"net.tcp://localhost:8080/"));
Service_I_IP.AddServiceEndpoint(typeof(I_IP), new NetTcpBinding(), "Service");
Service_I_IP.Open();
Console.ReadLine();
}
}
[ServiceContract]
public interface I_IP
{
[OperationContract]
string GetIP();
}
[ServiceContract]
public interface IService : I_IP
{
[OperationContract]
void ImTheServer_Print();
}
//
//
//
//
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class IPImplemantation : I_IP
{
public string GetIP()
{
return "1.2.3.4";
}
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class ServiceImplemantation : IPImplemantation, IService
{
public void ImTheServer_Print()
{
Console.WriteLine("ImTheServer_Print");
}
}
错误:
'net.tcp:// localhost:8080 / Service'中的ChannelDispatcher与合同'“I_IP”'无法打开其IChannelListener。
答案 0 :(得分:-1)
确保将其装饰为OneWay
。
[OperationContract(IsOneWay = true)]
void GetIP();