WCF支持SMB协议?或者其他不一定在TCP上运行的协议?

时间:2014-02-09 11:11:33

标签: c# wcf tcp connection smb

我遇到了一些麻烦,将我的一些不同的机器连接到运行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);

编辑: 似乎外部调制解调器取代了该机器上的默认网关,这可能是没有连接的原因。 当手动添加持久路由时,使用原始网关(具有低指标) - 它似乎再次起作用。有什么方法可以自动解决它吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

我的猜测是,您对WCF或您的网络存在特定问题,您应该尝试修复它。