使用WebService很方便,透過【加入Web參考】的方式來為我的專案加入WebService。不過由於系統開發過程中,小喵會區分為測試主機與正式主機,因此每次系統要上線的時候,就需要把WebService的參考Server改變。
使用WebService很方便,透過【加入Web參考】的方式來為我的專案加入WebService。不過由於系統開發過程中,小喵會區分為測試主機與正式主機,因此每次系統要上線的時候,就需要把WebService的參考Server改變。
這讓小喵開始構思,是否可以動態的告訴WebService應該到哪台Server去啟用執行WebService呢。再進一步,如果我將使用哪一台WebService設定抽離出來,變成一個設定檔。那麼我只需要在測試台與正式台使用不同的設定檔。但是程式卻是可以一致的。
假設我
測試環境要去使用 http://localhost/topcat/myWebService.asmx
正式環境要去使用http://blueshop.com.tw/topcat/myWebService.asmx
我先寫一個讀取設定檔的Function如下,設定檔中主要是記錄Server名稱或IP
Private Function GetWSUrl() As String
Dim StrmRd As New StreamReader("WebServiceUrl.ini")
Dim Line As String = ""
Dim WSUrl As String = ""
Try
Do
Line = StrmRd.ReadLine()
If Line <> "" Then
WSUrl += Line
End If
Loop Until Line Is Nothing
GetWSUrl = WSUrl
Catch ex As Exception
Throw New Exception(ex.Message.ToString)
Finally
StrmRd.Close()
StrmRd.Dispose()
StrmRd = Nothing
End Try
End Function
然後我就可以再調用WebService的時候
Try
Using obj As New WebReference.PSNDRobot
obj.Url = "http://" & GetWSUrl() & "/MyWebService.asmx" '在此動態設定WebService
obj.Discover() '重新整理WebService
Dim Rc as String = obj.Test()
End Using
Catch ex As Exception
Throw New Exception(ex.Message)
End Try