[C#]當WebService 需要多載時的方法,需要注意MessageName

.NET的WebService是一個可以讓別人從Web參考的存取資料的方式;這算是一個古老的技術,早從.Net 1.1時代就開始了,由於傳遞的方式是走SOAP,傳遞格視為XML,所以資料容量比較大,直到現今已經到JSON傳遞資料的時代,WebService還是有人使用,畢竟還是有老舊系統存在的使用必要。

當原本被呼叫的WebService需要增加欄位的時候,就變成所有周邊系統都要接著一起修正,這樣一個大工程,難道不能有WebService的多載嗎?

於是乎,就著手寫看看
首先,需要將

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
修改為
[WebServiceBinding(ConformsTo = WsiProfiles.None)]

再來就是,很重要

[WebMethod(Description = "原本的呼叫", MessageName = "參數1")]
function 上方 MessageName 會去對應SERVICE後面op=參數
[WebMethod(Description = "原本的呼叫", MessageName = "參數2")]
function 上方 MessageName 會去對應SERVICE後面op=參數2

所以,當原本的呼叫到的參數=AAA,請在MessageName=”AAA”,不然,其他周邊系統就會通通掛掉,因為SOAP的設定關係。

如果出現此WEB服務不符合…..之類的字眼,那是因為本來就不建議這樣使用。
警告畫面
可以再Web.Config設定

 <webServices>
      <conformanceWarnings>
        <remove name="BasicProfile1_1"/>
      </conformanceWarnings>
  </webServices>

參考資料:
ASP.NET WebService 增加方法註解與多載設定

作者: EmptyWu

十年左右的攻城經歷,但始終覺得能力不足,希望這地方可以填滿不足點。

有任何問題,歡迎提問~