<acronym id="laiff"><strong id="laiff"><address id="laiff"></address></strong></acronym>

      东坡下载:内容最丰富最安全的下载站!

      首页编程开发VC(VC++) → 如何在WCF中用TcpTrace工具查看发送和接收的SOAP消息

      如何在WCF中用TcpTrace工具查看发送和接收的SOAP消息

      相关文章发表评论 来源:本站时间:2010/10/14 9:36:06字体大小:A-A+

      更多

      作者:东坡下载点击:7018次评论:1次标签:

            WCF对消息加密(只对消息加密,不考虑Authorize)其实很简单,只要在server和client端的binding加入security mode为Message(还有Transport, TransportWithMessageCredential,关于他们的不同之处,请参考MSDN)即可。

            以一个简单的例子说明,这个例子只有一个Greeting方法,回显客户端的输入,如客户端输入"WCF",调用service的Greeting方法后回显"Hello,WCF!"。我这里server端的配置文件如下:

       Client端没有使用配置文件,直接在代码中编写,但要与server端一致:

      var binding = new WSHttpBinding();
      binding.Security.Mode
      = SecurityMode.Message;

            当我们对消息加密后,如果想查看一下是否真的加密,就要用到一个工具TcpTrace,这是一个可以跟踪SOAP消息的很好用的工具。也可以应用于web service的消息查看,因为都是SOAP消息格式。这个工具的官方网站下载地址:http://www.tcptrace.org/download.html。不需要安装,下载后直接运行。

            这个工具的原理就是开一个侦听端口,用于侦听Client端发送的数据,当Client发出一个Soap消息后,先把Soap拦截下来,进行Soap跟踪处理(如显示Soap消息,或记入log等)之后再把Soap消息传到真正的Service。所以我们需要配置两个port,一个是侦听端口,一个是目标端口,也就是service端口。如下图:

       点击OK就进入工作状态了。

           但是为了能让TcpTrace侦听到Client端发出的消息,我们要在Client端做些工作,需要一个特殊的Client端的Endpoint Behavior:ClientViaBehavior。假设tcpTrace进行侦听的Port为8081, 那么Client实现了ClientViaBehavior的代码如下,当然也可以在配置文件中直接添加。

      var binding = new WSHttpBinding();
      binding.Security.Mode
      =
      SecurityMode.Message;

      //Encrypt, can check with Tcp Trace

      binding.Security.Mode = SecurityMode.Message;
      //
      Not encrypt
      //binding.Security.Mode = SecurityMode.None;


      var factory
      = new ChannelFactory<IHelloService>(
          binding,
      new EndpointAddress("http://localhost:8080/HelloService"
      ));

      //Add listening port only at client.

      Uri tcpTraceUri = new Uri("http://localhost:8081/HelloService");
      factory.Endpoint.Behaviors.Add(
      new
      ClientViaBehavior(tcpTraceUri));

      var proxy
      =
      factory.CreateChannel();
      var result
      = proxy.Greeting("WCF Message");

       注意代码中的8081端口,作为behavior加入到endpoint中。这个behavior只在Client端的endpoint中加,server端不需要。

       然后就可以启动TcpTrace了,界面如下:

       我们先来看一下TcpTrace跟踪的不加密的Soap消息,即Client端的binding SecurityMode为None的情况:

       可见消息是明码的。我们再来看一下加密后的情况,即Client端的binding SecurityMode为Message的情况:

       可见消息都是加密过的,从而保证了消息的安全性。当然还可以加入用户认证,交换证书等安全性机制,这个例子只是说明如何使用TcpTrace来跟踪Soap消息,所以只做了加密部分。

      相关评论

      阅读本文后您有什么感想? 已有 人给出评价!

      • 2791 喜欢喜欢
      • 2101 顶
      • 800 难过难过
      • 1219 囧
      • 4049 围观围观
      • 5602 无聊无聊
      热门评论
      最新评论
      昵称:
      表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
      字数: 0/500 (您的评论需要经过审核才能显示)

      本类常用软件

      在线看a片黄

      <acronym id="laiff"><strong id="laiff"><address id="laiff"></address></strong></acronym>