使用工具来配置和测试WCF服务
从接触到WCF这个庞然大物以来都是手动来配置服务,之前在搞Silverlight的时候和她有过一面之缘,那时只要直接添加对服务的引用,就会给你生成客户端的代理,即便这样在配置服务的ABC时也难免会键入一些意想不到的字符导致各种问题!于是乎就有了这样的一篇学习笔记,来和大家分享一下使用工具来避免这些问题!
包含内容
1) 使用Microsoft Service Configuration Editor.exe工具来配置您的服务
2) 使用WcfSvcHost.exe & WcfTestClient.exe工具来测试您的服务
1.使用Microsoft Service Configuration Editor.exe工具来配置您的服务
1.建立一个WCF的类库
2.在默认生成的App.config文件上右键->编辑WCF配置,如果没有的话可以选择打开方式添加Microfot Service Configuration Editor.exe(一般在C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\ SvcConfigEditor.exe)到您的打开方式列表,打开后如下图:
选择服务可以直接看到该服务的终结点信息,需要改变终结点则需要展开服务下面的终结点可以修改当前服务的终结点信息,这里不多做介绍!
注意:如果是客户端配置的话,也是以同样的方式打开,客户端终结点的详细的信息会显示在客户端的节点下!
我们可以在高级节点下配置当前服务的终结点行为等一些高级内容,如果您想了解当前服务的后台变化也可以使用诊断来跟踪察看其生成非常详细的日志信息!总之一切当你在打开这个工具的时候自然明了!
2.使用WcfSvcHost.exe & WcfTestClient.exe工具来测试您的服务
1.右键建立的服务类库,选择调试->启动新实例,VS会帮我们分别启动上面说到的两个工具如图:
2. 测试服务契约中的操作
我们以GetData()为例,双击这个操作方法右边会出现一个请求和一个响应的网格状表格,不用解释,我们给value 一个值 “123”,调用的时候会出现一个安全警告只要确定即可,就绪后,下面的响应会显示调用操作的实现后返回的结果:
3.我们来看看请求和响应为我们做了哪些事情,选择XML选项卡会列出你想知道的答案
请求:
<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<a:Action s:mustUnderstand="1">http://tempuri.org/IService1/GetData</a:Action>
<a:MessageID>urn:uuid:479b77c6-38b2-45a8-90ce-6b59fbb264d5</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
</s:Header>
<s:Body>
<GetData xmlns="http://tempuri.org/">
<value>123</value>
</GetData>
</s:Body>
</s:Envelope>
响应:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:Action s:mustUnderstand="1" u:Id="_2">http://tempuri.org/IService1/GetDataResponse</a:Action>
<a:RelatesTo u:Id="_3">urn:uuid:946a22de-4cfa-4f79-90bb-9388e3df6076</a:RelatesTo>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="uuid-dde4183c-5ef2-4b7f-88f6-49472ef78e78-11">
<u:Created>2011-02-16T15:38:03.254Z</u:Created>
<u:Expires>2011-02-16T15:43:03.254Z</u:Expires>
</u:Timestamp>
<c:DerivedKeyToken u:Id="uuid-dde4183c-5ef2-4b7f-88f6-49472ef78e78-7" xmlns:c="http://schemas.xmlsoap.org/ws/2005/02/sc">
<o:SecurityTokenReference>
<o:Reference URI="urn:uuid:ef8e95ba-c668-4a6d-8ece-cbad27ad06df" ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" />
</o:SecurityTokenReference>
<c:Offset>0</c:Offset>
<c:Length>24</c:Length>
<c:Nonce>NjsUV3tVIMGM5CNgyc+OQg==</c:Nonce>
</c:DerivedKeyToken>
<c:DerivedKeyToken u:Id="uuid-dde4183c-5ef2-4b7f-88f6-49472ef78e78-8" xmlns:c="http://schemas.xmlsoap.org/ws/2005/02/sc">
<o:SecurityTokenReference>
<o:Reference URI="urn:uuid:ef8e95ba-c668-4a6d-8ece-cbad27ad06df" ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" />
</o:SecurityTokenReference>
<c:Nonce>AWEPyItj2LsR406BGkxhCg==</c:Nonce>
</c:DerivedKeyToken>
<e:ReferenceList xmlns:e="http://www.w3.org/2001/04/xmlenc#">
<e:DataReference URI="#_1" />
<e:DataReference URI="#_4" />
</e:ReferenceList>
<e:EncryptedData Id="_4" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:e="http://www.w3.org/2001/04/xmlenc#">
<e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<o:SecurityTokenReference>
<o:Reference ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/dk" URI="#uuid-dde4183c-5ef2-4b7f-88f6-49472ef78e78-8" />
</o:SecurityTokenReference>
</KeyInfo>
<e:CipherData>
<e:CipherValue>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</e:CipherValue>
</e:CipherData>
</e:EncryptedData>
</o:Security>
</s:Header>
<s:Body u:Id="_0">
<GetDataResponse xmlns="http://tempuri.org/">
<GetDataResult>You entered: 123</GetDataResult>
</GetDataResponse>
</s:Body>
</s:Envelope>
请看Action & Body 的部分,就可以明白她的意思!
好了,内容比较简单,您可以选择继续手写配置了!希望大家给点支持!另外Artech的WCF系列写的非常的棒,我也一直在拜读!