2014-02-09 143 views
0

我遇到了一些麻烦,将我的一些不同的机器连接到运行WCF(监听器)的专用Windows服务。 那些机器有一个连接到它们的外部调制解调器,这可能会干扰到外部的连接,但机器应该通过WCF与上述监听器服务建立连接。WCF支持SMB协议?或其他协议不一定在TCP上运行?

因为我需要的所有连接是我的网络内(不同的机器韧),它似乎是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); 

编辑: 看来,外部l调制解调器正在取代该机器上的默认网关,这可能是无法连接的原因。 手动添加持久路由时,与原始网关(指标较低) - 似乎再次运行。任何方式自动解决它?

在此先感谢!

回答

0

所以... SMB不是传输协议。 SMB本身主要使用TCP,但它也可以在UDP上运行。如果你想使用WCF而不是UDP你可以(更多info here),但我怀疑这会对你更好。

我的猜测是你有一个WCF或你的网络的具体问题,你应该尝试修复。

+0

感谢您的评论。 正如我读过的(在维基百科上),它可能确实运行在不同的传输层上。也许我在混合东西,我的理解对于这个东西并不深刻。但事实是,复制文件到其他机器工作正常,与外部调制解调器连接,而WCF over TCP不。 我不知道为什么,也不知道我是否在正确的解决方向,所以我很乐意收到更多关于如何解决它的想法。 谢谢 – AndroidNewbie

+0

@AndroidNewbie你应该问一个问题,并显示你的WCF配置,你使用的代码和你得到的错误细节。 – i3arnon

+0

编辑我的问题 – AndroidNewbie