WebService中方法的重載


  閱讀目錄

  一:WebService中的方法是否允許重載?

  二:為什么WebService中不支持方法的重載?

  三:如何解決WebService中方法的重載?

  一:WebService中的方法是否允許重載?

    WebService中不支持使用方法的重載,從圖片我們能夠得出結論

 1    [WebMethod]
 2   public string GetName()
 3   {
 4        return "從小就犯困";
 5   }
 6 
 7   [WebMethod]
 8   public string GetName(string strValue)
 9   {
10     return strValue;
11   }

    

  二:為什么WebService中不支持方法的重載?

    WebService中不支持方法的重載,這還得從WebService的工作機制中說起,當客戶端調用一個WebService的方法時,首先要將方法名稱和需要傳遞的參數包裝成XML,也就是SOAP包,通過HTTP協議傳遞到服務器端,然后服務器端解析這段XML,得到被調用的方法名稱和傳遞過來的參數,進而調用WebService相應的方法,方法執行完畢后,將返回結果再次包裝為XML,也就是SOAP響應,發送到客戶端,最后客戶端解析這段XML,最終得到返回結果,關鍵在於服務器端解析XML時無法識別重載的方法,WebService只認方法的名稱,而且兩個方法的名稱相同,服務器端不知道該調用哪個相應的方法

  三:如何解決WebService中方法的重載?

    可以通過MessageName屬性消除由於多個相同的名稱造成的Web服務無法識別的問題,因為MessageName屬性使得Web服務能夠確定唯一別名的重載方法,默認時候是方法本身的名稱,當指定MessageName屬性后,SOAP將反映MessageName的值,而不是方法名稱本身,所以這就解決了WebService中不支持方法的重載

 1   [WebServiceBinding(ConformsTo = WsiProfiles.None)]
 2   [WebMethod(MessageName="FirstMethod")]
 3   public string GetName()
 4   {
 5        return "從小就犯困";
 6   }
 7 
 8   [WebMethod(MessageName="SecordMethod")]
 9   public string GetName(string strValue)
10   {
11     return strValue;
12   }

     

    我們現在來看這兩個方法的消息名稱是不就被區分開了

     

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM