【问题标题】:WCF supports SMB protocol? Or other protocols that does not necessarily run over TCP?WCF 支持 SMB 协议吗?或者其他不一定通过 TCP 运行的协议?
【发布时间】: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


    【解决方案1】:

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

    我的猜测是您的 WCF 或您的网络存在特定问题,您应该尝试解决该问题。

    【讨论】:

    • 感谢您的评论。正如我所读(在维基百科上),它可能确实在不同的传输层上运行。也许我在混合东西,我对这些东西的理解并不深刻。但事实是,在连接了外部调制解调器的情况下,将文件复制到其他机器可以正常工作,而 WCF over TCP 则不行。我不知道为什么,也不知道我是否朝着正确的方向解决它,所以我很高兴收到更多关于如何解决它的想法。谢谢
    • @AndroidNewbie 你应该问一个问题并展示你的 WCF 配置、你正在使用的代码和你得到的错误详细信息。
    • @AndroidNewbie 一个新问题会更好。
    猜你喜欢
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多