本來我一直可以用的WebService服務,突然發現傳遞到Service端的String參數都不見了 !
搞了半天搞不定
最後發現一個事實...
Visual Studio可以用加入服務參考的方式,自動生成所對應的WCF類別,我們就可以快樂的在程式中使用。
但哪天我發現Service端的某個函數名稱命名不滿意想要更換,於是我將Service1.svc中的某個函式的某個參數名稱改變(例如我將以下的value改成number)
Public Function GetData(ByVal value As Integer) As String Implements IService1.GetData
Return String.Format("You entered: {0}", values)
End Function
然後發佈了!程式運作正常!
但想一想IService1.vb下的名稱也要改啊!不改是違反美學的事
於是我也將IService1的相同函式名稱的參數也改名了(例如將以下的value改成number)
<OperationContract()>
Function GetData(ByVal values As Integer) As String
最後神奇的事情發生了,之後程式無論輸入什麼都是出現You entered:0 !!原來是我沒有在主程式更新WCF服務,雖然找得到相同的函式名稱,但是找不到完全相同的參數名稱(大小寫也得符合),所以找不到的參數就以預設值處理了。
結論:
每次要release主程式前都請先更新服務參考後再重建一次,已確保WCF服務可運作正常