開發環境:Win7 32位,開發工具:VS2013,.Net:4.0
初用WebService,很多地方都搞不清楚怎么回事,但稍作研究之后,也就用上了,根本就沒有考慮后續事情。
但是,隨着項目的進行,到了該考慮部署的時候,問題來了:WebService需要部署到多個服務器,且每個服務器互相獨立,IP地址各不相同,而在添加引用的時候,地址是寫死的,怎么辦呢?
網上找了一些例子 ,有在ServiceSoapClient初始化時賦值地址的,也有動態創建引用的。
先說ServiceSoapClient初始化時賦值地址,這個看起來最簡單,只要一句代碼就可以:
this.service = new RADIServiceReference.ServiceSoapClient("ServiceSoap", "http://192.168.1.125/comeon.asmx");
前提是,要右鍵添加的引用,然后屬性,把獲取URL設為自動(這是從網上看的),可是,在我添加的引用里面,右鍵屬性,根本就沒有相關的設置,不知是VS的問題還是.net版本的問題,還是我打開的姿勢不對,於是就放棄從屬性下手,直接改配置文件里面的ip,但仍然無效,提示的錯誤是原來的地址(之前使用過其他ip)……總之是無從下手。
然后說第二種方法,動態創建WebService引用:
這種方法網上很多人都寫了Demo,我就不再重復了。我要說的是,我最開始懷着“先不考慮性能,只要能實現功能就行的心態”去臨摹這些Demo,到后來發現,用起來實在太費勁了,想調用自己的service里面的方法實在太復雜了,o(╯□╰)o,我很懶……
之后繼續網上找解決方案, 不經意間看到了右鍵ServiceSoapClient然后“轉到定義”,解說了一番上面第一種方法。出於好奇,我也在自己的工程里面轉到定義進入reference.cs看了一眼,這也算是機緣吧,終於發現了問題所在,service.cs文件里面的namespace有問題,之前我為了區分方便,直接用的本機ip加端口號(ip是寫死的)。接下來把發布的網站里面的service.cs里面的namespace改為撲通的字符串,reference.cs里面也對應替換,然后再重試第一種方法——OK!至於為什么會受到namespace的影響,我不知道!——不求甚解的我……
暫時先記錄這么多,繼續干活了……