我遇到了一些麻烦,将我的一些不同的机器连接到运行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);
编辑: 似乎外部调制解调器取代了该机器上的默认网关,这可能是没有连接的原因。 当手动添加持久路由时,使用原始网关(具有低指标) - 它似乎再次起作用。有什么方法可以自动解决它吗?
提前致谢!
答案 0 :(得分:0)
所以... SMB
不是传输协议。 SMB
本身主要使用TCP
,但它也可以在UDP
上运行。如果你想WCF
超过UDP
,你可以(更多info here),但我怀疑这对你有用。
我的猜测是,您对WCF
或您的网络存在特定问题,您应该尝试修复它。