Chinaunix首页 | 论坛 | 博客
  • 博客访问: 156789
  • 博文数量: 43
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-06 16:25
文章分类

全部博文(43)

文章存档

2015年(1)

2014年(12)

2008年(1)

2006年(29)

我的朋友

分类: C#/.net

2014-07-10 12:09:49

ZhuanZai:http://www.cnblogs.com/zhaozhan/archive/2010/10/18/1855182.html

如果要在WCF中使用SOAP1.1.,使用basicHttpBinding可以很容易实现,basicHttpBinding默认使用SOAP1.1.。利用自带的例子配置binding为basicHttpBinding:

 1: xml version="1.0"?>
 2: <configuration>
 3:  <system.web>
 4:  <compilation debug="true" targetFramework="4.0" />
 5:  system.web>
 6:  <system.serviceModel>
 7:  <behaviors>
 8:  <serviceBehaviors>
 9:  <behavior name="WcfService1.Service1Behavior">
10:  <serviceMetadata httpGetEnabled="true"/>
11:  <serviceDebug includeExceptionDetailInFaults="false"/>
12:  behavior>
13:  serviceBehaviors>
14:  behaviors>
15:  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
16:  <services>
17:  <service behaviorConfiguration="WcfService1.Service1Behavior"
18:  name="WcfService1.Service1">
19:  <endpoint address="" binding="basicHttpBinding"
20:  contract="WcfService1.IService1">
21:  <identity>
22:  <dns value="localhost" />
23:  identity>
24:  endpoint>
25:  service>
26:  services>
27:  system.serviceModel>
28:  <system.webServer>
29:  <modules runAllManagedModulesForAllRequests="true"/>
30:  system.webServer>
31: configuration>
32: 
33: 

       客户端引用WCF,代码:

1: static void Main(string[] args)
2: {
3:  localhost.Service1Client client = new localhost.Service1Client();
4:  client.GetData(1);
5: }
6:  

       利用tcpTrace截包,使用basicHttpBinding截包数据:

image

      可以看出使用的是SOAP1.1(SOAP1.1有SOAPAction项,SOAP1.2没有,当然SOAP1.2和1.1还有其他的区别,具有请查看w3的文档)。

 

      wsHttpBinding默认使用SOAP1.2(确切应该是Soap12WSAddressing10),修改配置文件:

 1: xml version="1.0"?>
 2: <configuration>
 3:  <system.web>
 4:  <compilation debug="true" targetFramework="4.0" />
 5:  system.web>
 6:  <system.serviceModel>
 7:  <behaviors>
 8:  <serviceBehaviors>
 9:  <behavior name="WcfService1.Service1Behavior">
10:  <serviceMetadata httpGetEnabled="true"/>
11:  <serviceDebug includeExceptionDetailInFaults="false"/>
12:  behavior>
13:  serviceBehaviors>
14:  behaviors>
15:  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
16:  <services>
17:  <service behaviorConfiguration="WcfService1.Service1Behavior"
18:  name="WcfService1.Service1">
19:  <endpoint address="" binding="wsHttpBinding"
20:  contract="WcfService1.IService1">
21:  <identity>
22:  <dns value="localhost" />
23:  identity>
24:  endpoint>
25:  service>
26:  services>
27:  system.serviceModel>
28:  <system.webServer>
29:  <modules runAllManagedModulesForAllRequests="true"/>
30:  system.webServer>
31: configuration>
32: 
33: 

       使用wsHttpBinding截包数据:

image

       wsHttpBinding默认是使用Message的传输方式。

image

        basicHttpBinding默认是使用soap1.1,但是basicHttpBinding是明文传输的,wsHttpBinding可以实现加密传输,但soap是soap1.2;可以利用自定义绑定(customBinding)设置soap版本为soap1.1,并且使用加密等传输方式:

 1: xml version="1.0"?>
 2: <configuration>
 3:  <system.web>
 4:  <compilation debug="true" targetFramework="4.0" />
 5:  system.web>
 6:  <system.serviceModel>
 7:  <behaviors>
 8:  <serviceBehaviors>
 9:  <behavior name="WcfService1.Service1Behavior">
10:  <serviceMetadata httpGetEnabled="true"/>
11:  <serviceDebug includeExceptionDetailInFaults="false"/>
12:  behavior>
13:  serviceBehaviors>
14:  behaviors>
15:  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
16:  <services>
17:  <service behaviorConfiguration="WcfService1.Service1Behavior"
18:  name="WcfService1.Service1">
19:  <endpoint address="" binding="customBinding" bindingConfiguration="Soap11AddressingBinding"
20:  contract="WcfService1.IService1">
21:  <identity>
22:  <dns value="localhost" />
23:  identity>
24:  endpoint>
25:  service>
26:  services>
27:  <bindings>
28:  <customBinding>
29:  <binding name="Soap11AddressingBinding">
30:  <textMessageEncoding messageVersion="Soap11WSAddressing10" />
31:  <httpTransport/>
32:  binding>
33:  customBinding>
34:  bindings>
35:  system.serviceModel>
36:  <system.webServer>
37:  <modules runAllManagedModulesForAllRequests="true"/>
38:  system.webServer>
39: configuration>
40: 
41: 

        使用Soap11AddressBinding截包数据:

image

分类: WCF/Web Servics
标签: SOAP, WCF, SOAP1.1, SOAP1.2
阅读(691) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~