.net 具有动态主机/客户端的WCF双工服务
我是WCF的新手,所以如果我问得不清楚,请原谅我 我有一个环境,我有一组计算机(10到20台)连接在局域网内。每台计算机都有一个静态IP,并附带2个应用程序:AppA和AppB AppA和AppB旨在相互共享信息,但我不希望AppA与AppB在同一台计算机上配对。我需要AppA从LAN中的计算机列表中选择一台计算机,然后尝试建立与在所选计算机上运行的AppB的连接 例如,我正在计算机X上运行AppA,并且从计算机列表中选择连接到计算机Y。AppA将连接到计算机Y上运行的AppB(该计算机正在承载双工WCF服务) 在我的AppB上,我已经定义了服务和回调接口 我这里有几个问题:.net 具有动态主机/客户端的WCF双工服务,.net,wcf,duplex-channel,.net,Wcf,Duplex Channel,我是WCF的新手,所以如果我问得不清楚,请原谅我 我有一个环境,我有一组计算机(10到20台)连接在局域网内。每台计算机都有一个静态IP,并附带2个应用程序:AppA和AppB AppA和AppB旨在相互共享信息,但我不希望AppA与AppB在同一台计算机上配对。我需要AppA从LAN中的计算机列表中选择一台计算机,然后尝试建立与在所选计算机上运行的AppB的连接 例如,我正在计算机X上运行AppA,并且从计算机列表中选择连接到计算机Y。AppA将连接到计算机Y上运行的AppB(该计算机正在承载
DuplexChannelFactory
打开双工通道,并将端点设置为所选计算机的端点
DuplexChannelFactory
连接到服务。这意味着AppA和AppB在App.config
中根本没有WCF内容
以下是我在AppB上托管服务的方式:
public static void HostService()
{
var baseAddress = new Uri(GetHostAddress());
Host = new ServiceHost(typeof(MyService), baseAddress);
NetTcpBinding netTCPBinding = new NetTcpBinding();
netTCPBinding.ReliableSession.Ordered = true;
Host.AddServiceEndpoint(typeof(IMyService), netTCPBinding, baseAddress);
Host.Open();
}
HostService()
方法仅在用户在AppB中执行某些操作时调用。但是,当应用程序启动时,WcfSvcHost
窗口显示有一个MyService
的实例,但它处于停止状态。错误详细信息显示:
无法启动该服务。此服务未定义终结点。
请在配置文件中为该服务添加至少一个终结点,然后重试
再试一次
我在调用HostService()
的线路上设置了一个断点,WcfSvcHost
在调用HostService()
之前已经显示了该消息。除了我写的代码之外,似乎还有其他东西在尝试启动服务
如何设置AppB,使其IP取决于它所使用的机器
她在跑步吗
使用localhost作为所有AppB实例的基址
如何设置AppA,使其能够动态连接到
在不同的IP地址上运行不同的AppB
你必须这么做。然后,让某种运行时解析器根据某种查找选择适当的服务端点地址。我设法运行了该服务,客户机设法连接到该服务。服务和客户端都是在代码中完成的,而不是
App.config
(该文件未定义服务/端点/客户端)。但是,我注意到,在运行时,还有其他东西试图运行该服务。WcfSvcHost正在显示已停止的服务实例,详细信息为服务无法启动。此服务未定义终结点。请在配置文件中为服务添加至少一个端点,然后重试。
。这发生在我手动实例化我的ServiceHost
之前。您是否使用windows服务托管?@TomRedfern我通过代码自托管,服务绑定和端点都在代码中定义,服务通过调用open()启动
在自定义ServiceHost
实例上。您能发布您的服务端点的代码定义吗?@TomRedfern已更新。