勇哥注:
这是因为默认情况下REST是启用了安全消息的。
默认情况下,REST服务的传输数据是安全加密的。
这个时候你用Fiddle抓包,看到resphonse部分是密文无法阅读。
类似下面这样:
CliperData后面就是一大串看不懂的密文数据。
s:Body[u:Id=0] e:EncryptedData e:CliperData
我们可以在服务端和客户端同时去掉安全项。
要注意的是:wsHttpBinding是可以使用可靠的消息传输的(reliableSession enabled="true")。
但是最重要的一点: 一定要保证在客户端与服务端下面的配置完全一致,否则异常。
<bindings> <wsHttpBinding> <binding name="wsbind1_IClientInfoDefByServer"> <reliableSession enabled="true" /> <security mode="None" /> </binding> </wsHttpBinding> </bindings>
或者也可以使用代码方式:
WSHttpBinding wsbind13 = new WSHttpBinding(); wsbind13.Name = "wsbind1"; wsbind13.ReliableSession.Enabled = true; wsbind13.Security.Mode = SecurityMode.None; using (ChannelFactory<IClientInfoDefByServer> channelFactory = new ChannelFactory<IClientInfoDefByServer>(wsbind13, "
下面看下去掉安全设定的后的效果:
下图是WCF的REST服务的一次Get调用。
这里有一个疑问,为啥一次get调用,Fiddler会抓到两条信息?
有人说:第一次请求是options请求,是一个预检请求,判断通信是否正常,通讯正常则发起正真的请求
对这个结论感觉也不怎么靠谱。
那是不是因为消息先转发到了127.0.0.1:8888(Fiddle的代理端口),再转到实际目标服务器,从而造成这种现象呢?
不过貌似也不是吧,因为两条Host都显示的是192.168.20.200。
所以这个问题暂时勇哥也不明白。
我们再看resphonse的报文,已经是可以阅读的xml内容了。

