日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
WCF尋址報頭經驗之談

WCF中的地址獲取在實際編程中是一個比較重要的操作技術。我們今天為大家介紹的是有關這方面的一些基礎知識,比如有關WCF尋址報頭的一些應用技巧。希望可以給大家?guī)硪恍椭?/p>

創(chuàng)新互聯(lián)專注于明溪網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供明溪營銷型網站建設,明溪網站制作、明溪網頁設計、明溪網站官網定制、小程序開發(fā)服務,打造明溪網絡公司原創(chuàng)品牌,更為您提供明溪網站排名全網營銷落地服務。

在某些情況下,我們可能希望通過自定義尋址報頭來解決一些復雜的問題,如根據(jù)根據(jù)傳入的WCF尋址報頭中是否包含某些信息,將其轉發(fā)到不同的終結點,通過自定義尋址報頭,可以實現(xiàn)SOAP消息的無限擴展,放置任何希望的控制信息到SOAP消息。如下面的代碼:

 
 
 
  1. using (ServiceHost calculatorServiceHost =  
  2. new ServiceHost(typeof(CalculatorService),  
  3. new Uri("http://localhost:8887/CalculatorService")))  
  4. {  
  5. calculatorServiceHost.Opened += delegate  
  6. {  
  7. Console.WriteLine("Service begin to listen via the Address:{0}",  
  8. calculatorServiceHost.BaseAddresses[0].ToString());  
  9. };  
  10. AddressHeader header =  
  11. AddressHeader.CreateAddressHeader("basic",  
  12. "http://www.cnblogs.com/terrylee", "Terrylee");  
  13. EndpointAddress ea = new EndpointAddress(  
  14. new Uri("http://localhost:8887/CalculatorService"), header);  
  15. calculatorServiceHost.Description.Endpoints.Add(  
  16. new ServiceEndpoint(  
  17. ContractDescription.GetContract(typeof(ICalculator)),  
  18. new WSHttpBinding(),  
  19. ea));  
  20. ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();  
  21. behavior.HttpGetEnabled = true;  
  22. calculatorServiceHost.Description.Behaviors.Add(behavior);  
  23. calculatorServiceHost.Open();  
  24. Console.Read();  

我們在WSDL中可以看到該自定義的報頭,它作為終結點引用的引用參數(shù):

 
 
 
  1. < wsdl:service name="CalculatorService"> 
  2. < wsdl:port name="WSHttpBinding_ICalculator" 
    binding="tns:WSHttpBinding_ICalculator"> 
  3. < soap12:address location="http://localhost:8887/CalculatorService" /> 
  4. < wsa10:EndpointReference> 
  5. < wsa10:Address>http://localhost:8887/CalculatorService
    < /wsa10:Address> 
  6. < wsa10:ReferenceParameters> 
  7. < basic xmlns="http://www.cnblogs.com/terrylee">Terrylee< /basic> 
  8. < /wsa10:ReferenceParameters> 
  9. < Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/
    addressingidentity"> 
  10. < Upn>TerryLee-PC\TerryLee< /Upn> 
  11. < /Identity> 
  12. < /wsa10:EndpointReference> 
  13. < /wsdl:port> 
  14. < /wsdl:service> 

截獲到SOAP消息可以看到,在消息報頭中添加了basic這樣的信息,如下代碼所示:

 
 
 
  1. < s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
  2. < s:Header> 
  3. < basic xmlns="http://www.cnblogs.com/terrylee">Terrylee< /basic> 
  4. < To s:mustUnderstand="1">http://localhost:8887/CalculatorService< /To> 
  5. < Action s:mustUnderstand="1">http://tempuri.org/ICalculator/Add< /Action> 
  6. < /s:Header> 
  7. < s:Body> 
  8. < Add xmlns="http://tempuri.org/"> 
  9. < x>1< /x> 
  10. < y>2< /y> 
  11. < /Add> 
  12. < /s:Body> 
  13. < /s:Envelope> 

當然我們也可以通過配置的方式對WCF尋址進行自定義WCF尋址報頭,如下代碼所示:

 
 
 
  1. < service name="TerryLee.WCFAddressing.Service.CalculatorService" 
  2. behaviorConfiguration="calculatorBehavior"> 
  3. < host> 
  4. < baseAddresses> 
  5. < add baseAddress="http://localhost:8887/Calculator"/> 
  6. < /baseAddresses> 
  7. < /host> 
  8. < endpoint address="" 
  9. binding ="wsHttpBinding" 
  10. contract="TerryLee.WCFAddressing.Contract.ICalculator"> 
  11. < headers> 
  12. < basic xmlns="http://www.cnblogs.com/terrylee">Terrylee< /basic> 
  13. < /headers> 
  14. < /endpoint> 
  15. < /service> 

WCF尋址報頭的一些基本內容就為大家介紹到這里。

【編輯推薦】

  1. WCF框架處理流程基本功能解析
  2. WCF服務加載實際應用方法詳解
  3. AJAX WCF服務項模板正確使用方法介紹
  4. WCF返回值適用場景分析
  5. WCF數(shù)據(jù)量在實際應用中錯誤解決方法

網頁標題:WCF尋址報頭經驗之談
網站路徑:http://www.dlmjj.cn/article/copdsdc.html