【发布时间】:2014-03-06 16:04:10
【问题描述】:
我在将我的一些不同机器连接到运行WCF(监听器)的专用 Windows 服务时遇到了一些麻烦。
这些机器连接了一个外部调制解调器,这可能会干扰TCP 与外部的连接,但这些机器应该通过WCF 与上述侦听器服务建立连接。
由于我需要的所有连接都在我的网络内部(不同的机器很困难),而且 Windows 共享(复制文件等)确实工作,(假设我没有弄错,它使用SMB 协议),如果可能的话,我希望使用该协议或其他不运行在TCP 上的协议来建立有效的连接。
我在 MSDN 上找不到任何帮助,但也许有人以前尝试过类似的事情,或者遇到过类似的问题,并且可以帮助我解决这个问题。
一些代码(我猜很通用):
private const string ServiceEndointURL = "net.tcp://localhost:6789/MyService";
用于:[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, UseSynchronizationContext = true)]
public class MyApplication : IService
其中IService 被定义:
[ServiceContract(Name = "MyService")]
public interface IService
{
[OperationContract]
bool HandleMessage(Message message);
}
另一方(“客户端”):
string ListenerURL = "net.tcp://xx.xx.xx.xx:6789/MyService";
ChannelFactory<IService> factory = new ChannelFactory<IService>
(new MyNetBindings(), ListenerURL );
IService channel = l_oFactory.CreateChannel();
((IContextChannel)channel).OperationTimeout = new TimeSpan(0, 1, 1);
编辑: 似乎外部调制解调器正在取代该机器上的默认网关,这可能是没有连接的原因。 当使用原始网关(指标低)手动添加持久路由时,它似乎又可以工作了。有什么方法可以自动解决它?
提前致谢!
【问题讨论】:
标签: c# wcf tcp connection smb