91在线一级黄片|91视频在线观看18|成人夜间呦呦网站|91资源欧美日韩超碰|久久最新免费精品视频一区二区三区|国产探花视频在线观看|黄片真人免费三级片毛片|国产人无码视频在线|精品成人影视无码三区|久久视频爱久久免费精品

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
WCFopenation實(shí)際應(yīng)用異常解決方案

WCF的實(shí)際應(yīng)用方法多樣化,要想全部掌握是一件非常困難的事情。不過(guò)我們可以在不斷的實(shí)踐中去積累應(yīng)用經(jīng)驗(yàn),以幫助我們提高熟練應(yīng)用程度。在這里就可以先學(xué)到一個(gè)WCF openation的應(yīng)技巧。

很多時(shí)候我們用到方法的重載,在WCF中也不例外.不過(guò)需要加一點(diǎn)東西.我們以正常的方法來(lái)寫一個(gè)方法的重載,代碼如下:

 
 
 
  1. [ServiceContract]  
  2. public interface ICalculatorContract  
  3. {  
  4. [OperationContract]  
  5. int add(int x, int y);  
  6. [OperationContract]  
  7. double add(double x, double y);  

我把a(bǔ)dd方法進(jìn)行了重載.

 
 
 
  1. public class CalculatorService:ICalculatorContract  
  2. {  
  3. #region ICalculatorContract Members  
  4. int ICalculatorContract.add(int x, int y)  
  5. {  
  6. return x + y;   
  7. }  
  8. #endregion  
  9. #region ICalculatorContract Members  
  10. public double add(double x, double y)  
  11. {  
  12. return x + y;   
  13. }  
  14. #endregion  

host 如下:

 
 
 
  1. BasicHttpBinding binding = new BasicHttpBinding();   
  2. Uri baseUri=new Uri ("http://172.28.3.45/CalculatorService");  
  3. ServiceHost host = new ServiceHost(typeof(CalculatorService), baseUri);   
  4. host.AddServiceEndpoint(typeof(ICalculatorContract), 
    binding,string.Empty);  
  5. ServiceMetadataBehavior behavior = host.Description.Behaviors.
    Find();  
  6. if (behavior == null)  
  7. {  
  8. behavior = new ServiceMetadataBehavior();  
  9. behavior.HttpGetEnabled = true;  
  10. behavior.HttpGetUrl = baseUri;  
  11. host.Description.Behaviors.Add(behavior);  
  12. }  
  13. host.Open(); 

這時(shí)我們運(yùn)行host會(huì)出現(xiàn)異常:

Cannot have two operations in the same contract with the same name, methods add and add in type CalculatorContract.ICalculatorContract violate this rule. You can change the name of one of the operations by changing the method name or by using the Name property of OperationContractAttribute.

出現(xiàn)這個(gè)異常的原因是因?yàn)閟oap message action,不能區(qū)分這兩個(gè)方法:所以解決如下:

 
 
 
  1. [ServiceContract]  
  2. public interface ICalculatorContract  
  3. {  
  4. [OperationContract(Name="add1")]  
  5. int add(int x, int y);  
  6. [OperationContract(Name="add2")]  
  7. double add(double x, double y);  

為WCF openation加一個(gè)***的name值.這樣不可以soap message區(qū)分這兩個(gè)方法了.再次運(yùn)行host.沒(méi)有異常了.

這樣客戶端就可以正常使用add方法.

【編輯推薦】

  1. MSMQ使用WCF正確實(shí)現(xiàn)技巧講解
  2. WCF PreSession模式保持調(diào)用狀態(tài)
  3. WCF PreCal模式基本代碼示例解析
  4. WCF使用Nhibernate具體操作步驟圖解
  5. WCF枚舉實(shí)現(xiàn)技巧總結(jié)

本文題目:WCFopenation實(shí)際應(yīng)用異常解決方案
鏈接URL:http://m.jiaoqi3.com/article/dpjecjs.html