日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時(shí)間:2025/5/22 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在WCF中用TcpTrace工具查看发送和接收的SOAP消息 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

WCF對消息加密(只對消息加密,不考慮Authorize)其實(shí)很簡單,只要在server和client端的binding加入security mode為Message(還有Transport,?TransportWithMessageCredential,關(guān)于他們的不同之處,請參考MSDN)即可。

以一個(gè)簡單的例子說明,這個(gè)例子只有一個(gè)Greeting方法,回顯客戶端的輸入,如客戶端輸入"WCF",調(diào)用service的Greeting方法后回顯"Hello,WCF!"。我這里server端的配置文件如下:

Client端沒有使用配置文件,直接在代碼中編寫,但要與server端一致:

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

當(dāng)我們對消息加密后,如果想查看一下是否真的加密,就要用到一個(gè)工具TcpTrace,這是一個(gè)可以跟蹤SOAP消息的很好用的工具。也可以應(yīng)用于web service的消息查看,因?yàn)槎际荢OAP消息格式。這個(gè)工具的官方網(wǎng)站下載地址:http://www.tcptrace.org/download.html。不需要安裝,下載后直接運(yùn)行。

這個(gè)工具的原理就是開一個(gè)偵聽端口,用于偵聽Client端發(fā)送的數(shù)據(jù),當(dāng)Client發(fā)出一個(gè)Soap消息后,先把Soap攔截下來,進(jìn)行Soap跟蹤處理(如顯示Soap消息,或記入log等)之后再把Soap消息傳到真正的Service。所以我們需要配置兩個(gè)port,一個(gè)是偵聽端口,一個(gè)是目標(biāo)端口,也就是service端口。如下圖:

點(diǎn)擊OK就進(jìn)入工作狀態(tài)了。

?

但是為了能讓TcpTrace偵聽到Client端發(fā)出的消息,我們要在Client端做些工作,需要一個(gè)特殊的Client端的Endpoint Behavior:ClientViaBehavior。假設(shè)tcpTrace進(jìn)行監(jiān)聽的Port為8081, 那么Client實(shí)現(xiàn)了ClientViaBehavior的代碼如下,當(dāng)然也可以在配置文件中直接添加。

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中。這個(gè)behavior只在Client端的endpoint中加,server端不需要。

?

然后就可以啟動(dòng)TcpTrace了,界面如下:

我們先來看一下TcpTrace跟蹤的不加密的Soap消息,即Client端的binding?SecurityMode為None的情況:

可見消息是明碼的。我們再來看一下加密后的情況,即Client端的binding?SecurityMode為Message的情況:

可見消息都是加密過的,從而保證了消息的安全性。當(dāng)然還可以加入用戶認(rèn)證,交換證書等安全性機(jī)制,這個(gè)例子只是說明如何使用TcpTrace來跟蹤Soap消息,所以只做了加密部分。

例子代碼請到我的個(gè)人網(wǎng)站下載:http://www.vczx.com/article/show.php?id=1011812

歡迎大家提出任何意見或建議!

總結(jié)

以上是生活随笔為你收集整理的如何在WCF中用TcpTrace工具查看发送和接收的SOAP消息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。