【发布时间】:2013-04-19 17:01:08
【问题描述】:
我有一个测试项目来测试继承合约和回调合约。
更新 1 :我用接口植入更新了所有主题
通过阅读本文: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。
【问题讨论】:
-
我认为您在异常中的答案是正确的:“接口类型不是 ServiceContractAttribute 的 CallbackContract 的目标”。 GetIP 在 I_IP 上定义,而 CallbackContract 引用 IServerCallback。也许不支持继承服务方法?只是预感......
-
通过我的谷歌搜索,它是。 stackoverflow.com/questions/957116/…
-
那么你的服务/回调实现呢?是否也实现了I_IP?
-
不,每个合约都有实现,服务/回调实现继承自 I_IP 实现。我通过这个 guid 编写了我的项目:codeidol.com/csharp/wcf/Service-Contracts/Contract-Inheritance/…
-
你在stackoverflow.com/users/1413320/sergey上的帖子你必须已经实现了接口。最后,您的回调应该以我的方式提供此方法
标签: wcf