使用单个合约运行 ServiceHost 工作正常,如下所示:
servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.Open();
现在我想添加第二份(第三份、第四份……)合同。我的第一个猜测是添加更多端点,如下所示:
servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.AddServiceEndpoint(typeof(IMyService2), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService2");
servicehost.Open();
但这当然不起作用,因为在创建 ServiceHost 时,我可以传递 MyService1 作为参数,也可以传递 MyService2 - 所以我可以向我的服务添加很多端点,但所有端点都必须使用相同的合约,因为我只能提供一个实施?
我感觉我没有抓住要点。当然,必须有某种方法来为我添加的每个端点合约提供实现,或者不是?
您需要在同一个类中实现这两个服务(接口)。
servicehost = new ServiceHost(typeof(WcfEntryPoint));
servicehost.Open();
public class WcfEntryPoint : IMyService1, IMyService2
{
#region IMyService1
#endregion
#region IMyService2
#endregion
}
仅供参考:我经常使用部分类来使我的主机类代码更易于阅读:
// WcfEntryPoint.IMyService1.cs
public partial class WcfEntryPoint : IMyService1
{
// IMyService1 methods
}
// WcfEntryPoint.IMyService2.cs
public partial class WcfEntryPoint : IMyService2
{
// IMyService2 methods
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)