我有一个非常简单的 Web 服务功能,可以从数据库中提取数据并将其返回给用户。但是我最近发现(通过登录数据库端)调用正在执行两次。我已将其范围缩小到导致问题的 Web 服务......如果我通过 localhost 上的浏览器打开该服务,然后直接执行它,SQL 日志显示它已在大约 1/100 秒内运行了两次。
我包括我的指导代码。内置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
Connection() 函数只是从 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
...基本上就是这样。它就像你能得到的一样简单。
考虑到这一点,有没有人知道它为什么会这样,以及我将来如何防止这种情况发生?这个查询没什么大不了的,但如果它是在(例如)购买或付款时进行的,它可能是一个非常大的问题。