WCF继承合同和回调合同

时间:2013-04-19 17:01:09

标签: wcf

我有一个测试继承合同和回调合同的测试项目。

更新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。

1 个答案:

答案 0 :(得分:-1)

确保将其装饰为OneWay

[OperationContract(IsOneWay = true)]
void GetIP();
相关问题