延續昨天遭遇的奇怪狀況,
現在回想起來,昨天好像做了一個很關鍵的事:直接修改 Web Service 的 Reference.cs 內容。
而之所以會去修改 Reference.cs,是因為遇到的第一個錯誤:ArrayOfAnyType。
原本預定呼叫 Web Service 方法傳參數的資料型別是 ArrayList,但沒想到竟然會拋出 ArrayOfAnyType 異常。
看到這個異常,再回去比對前面寫過的 Web Service 方法(確實都沒有 ArrayList 的參數資料型別)
本能反應就是先調整參數的資料型別,也就是把 ArrayList 改成 string,
然後就手工修改了 Reference.cs,結果就遇到了奇怪狀況。
剛剛試著新開一個專案,然後呼叫同樣的 Web Service方法,
如同預料之中,執行結果是正常的:
當然,這只是為了驗證並釐清問題點,所以新專案用 Console 模式,模擬的程式碼如下:
class Program { public static void Main(string[] args) { string remotePrimaryKey = "C2015N00001,43,C2015N00005,43"; DMRS.DataManagerSoapClient wechat = new DMRS.DataManagerSoapClient("DataManagerSoap"); int c = wechat.DeleteCustomerAfterRestore(remotePrimaryKey); Console.Write("the value returned by WebService: {0}\r\n", c); Console.Read(); } }
Web Service 端的程式碼已經在前一篇貼過,這裡就不再重覆。
最後回到原來的疑慮:莫名奇妙。
為什麼始終在這類字眼繞著呢?因為在修改 Reference.cs 的當時,
就已經看到 VS 提示可能會造成無法預知的錯誤或異常,
而我也知道 Reference.cs 是 VS 自動產生的,因此對這個提示並不感到意外。
所以之後我特地「刪除並重建服務參考」,而且還挺多次的,
但好像沒什麼作用,因為不管怎麼刪怎麼重建,都一直報同樣的錯誤。
最後乾脆索性刪掉然後把服務換個名字重建。
(該不會每次都要這樣搞吧?)