【问题标题】:How to call a WCF Windows service as a raw TCP request如何将 WCF Windows 服务作为原始 TCP 请求调用
【发布时间】:2011-04-14 09:48:02
【问题描述】:

我有一个问题。我一直在谷歌搜索,我不知道该怎么做,所以非常感谢任何帮助。基本上,我在 App Tier 上有一个 Windows Wcf 服务(它不会也永远不会安装 IIS)。作为安全测试的一部分,我需要将手动创建的 TCP 请求发送到 Wcf 服务。 Windows 服务只有一个 NetTcpBinding,没有别的。我的解决方案需要创建一个 TCP 请求作为 SOAP 消息的一部分,将其发送到 Wcf 服务并取回响应。使用 Wcf 测试客户端时我没有任何问题,所以我知道 Wcf 服务可以正常工作。有人可以帮忙吗?

根据我在阅读 msdn 网站等后收集到的信息......我需要使用套接字并创建一个 SOAP 请求,但是当我的必须是 netTcpBinding 时,所有示例都集中在 wsHttpBinding 上。

谢谢

【问题讨论】:

  • 您有一个带有 TCP 端点的 WCF 服务,您想从另一层调用它?当您说“手动创建的 TCP 请求”时,您的确切含义是什么?您只想在 TCP 端点上调用一个操作?
  • 我将从不同的机器(可能是不同的应用层)调用 WCF 服务,但它会在同一个网络上。是的。所以我基本上只想编写一个调用 Wcf 服务上的方法的请求。例如,如果它通过 HTTPBinding,我可以编写一个 HttpWebRequest(或类似的东西)。我基本上需要做同样的事情,但对于 Tcp 连接并且不使用任何代理引用。

标签: .net wcf service tcp


【解决方案1】:

查看此链接: Build raw soap messages

您可以构建未键入的消息并通过网络发送。

干杯,

吉拉德

【讨论】:

    【解决方案2】:

    根据您的 cmets,我认为这就像使用 ChannelFactoryNetTcpBinding 一样简单。所以是这样的:

    NetTcpBinding binding = new NetTcpBinding();
    EndpointAddress address = new EndpointAddress("Your URI");
    
    ChannelFactory<IContract> factory = new ChannelFactory<IContract>(binding, address);
    IContract channel = factory.CreateChannel();
    
    channel.YourOperation();
    
    ((ICommunicationObject)channel).Close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2012-02-24
      • 2018-05-29
      • 2012-04-28
      • 2016-01-27
      • 1970-01-01
      相关资源
      最近更新 更多