延續昨天遭遇的奇怪狀況,

現在回想起來,昨天好像做了一個很關鍵的事:直接修改 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 自動產生的,因此對這個提示並不感到意外。

所以之後我特地「刪除並重建服務參考」,而且還挺多次的,

但好像沒什麼作用,因為不管怎麼刪怎麼重建,都一直報同樣的錯誤。

最後乾脆索性刪掉然後把服務換個名字重建。

(該不會每次都要這樣搞吧?)

posted on 2015-12-18 10:20  吉格艾諾  阅读(238)  评论(0编辑  收藏  举报