我有一個非常簡單的Web服務函數,它從數據庫中提取數據並將其返回給用戶。不過,我最近發現(通過登錄數據庫端)該呼叫正在執行TWICE。我已經縮小到導致問題的web服務...如果我通過本地主機上的瀏覽器打開服務,然後直接執行它,SQL日誌顯示它已在大約1/100秒內運行兩次。WebService調用數據庫兩次
我包括我的指導代碼。內置VS2008。
<WebMethod()> _
Public Function MY_DATABASE_QUERY() As DataSet
Dim DS As New DataSet
Dim DA As New SqlDataAdapter
Dim Cmd As New SqlCommand
With Cmd
.Connection = Connection()
.CommandType = CommandType.StoredProcedure
.CommandText = "SOME_STORED_PROCEDURE"
.Connection.Open()
.ExecuteReader()
.Connection.Close()
DA.SelectCommand = Cmd
DA.Fill(DS)
End With
Return DS
End Function
的連接()函數簡單地從web.config中拉加密的連接字符串,密碼進行解密,並返回對象:
Public Function Connection() As SqlConnection
Dim R As New Rijndael
Return New SqlConnection(R.DecryptString128Bit(System.Configuration.ConfigurationManager.ConnectionStrings("ConnString").ToString, "S0ME_HA$H_C0D3"))
End Function
...這基本上它。這很簡單,你可以得到。
考慮到這一點,是否有人有任何想法,爲什麼它的行爲如此,以及我將來如何防止這種情況?對於這個查詢來說沒什麼大不了的,但是如果它正在進行購買或付款,這可能是一個非常大的交易。
您是否檢查過您的服務是否被調用兩次?例如,通過放置一些日誌記錄? – nvoigt
我的第一個想法是,它被稱爲它的網頁被兩次調用,並且我在這個方向上浪費了大量時間進行故障排除。但是,如果您將呼叫網頁從等式中移除並手動調用web服務(通過網頁瀏覽到http://localhost/address/to/MyWebService.asmx),它仍會顯示它正在執行兩次。 –