運行兩次我創建了一個VB.NET頁面來記錄廣告的視圖,並將從img src調用頁面。ASP.NET Page_Load由於Bitmap.Save
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim insert_number As Integer = 0
Dim ad_id As Integer = 0
If Request.QueryString("adid") Is Nothing Then
ad_id = 0
Else
If Not Integer.TryParse(Request.QueryString("adid"), ad_id) Then
ad_id = 0
End If
End If
Dim connectStr As String = System.Configuration.ConfigurationManager.AppSettings("connectStr").ToString()
Dim myconnection As SqlConnection = New SqlConnection(connectStr)
Dim mySqlCommand As SqlCommand
myconnection.Open()
Try
mySqlCommand = New SqlCommand("sp_record", myconnection)
mySqlCommand.CommandType = CommandType.StoredProcedure
mySqlCommand.Parameters.AddWithValue("@record_id", ad_id)
insert_number = mySqlCommand.ExecuteNonQuery()
Catch ex As Exception
End Try
myconnection.Close()
Dim oBitmap As Bitmap = New Bitmap(1, 1)
Dim oGraphic As Graphics = Graphics.FromImage(oBitmap)
oGraphic.DrawLine(New Pen(Color.Red), 0, 0, 1, 1)
'Response.Clear()
Response.ContentType = "image/gif"
oBitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
'oBitmap.Dispose()
'oGraphic.Dispose()
End Sub
除非我的評論oBitmap.Save線,代碼運行兩次,它使兩個刀片(店prcoedure運行兩次)數據庫。
我在@PAGE試過AutoEventWireup =「true」和「false」。 「true」運行兩次代碼,「false」沒有做任何事情(沒有錯誤),也沒有給出任何輸出。
我也曾嘗試下列尋釁1像素圖像輸出的版本,但它並運行兩次,以及(它需要aspcompat =在@PAGE部分屬實):
'Response.ContentType = "image/gif"
'Dim objStream As Object
'objStream = Server.CreateObject("ADODB.Stream")
'objStream.open()
'objStream.type = 1
'objStream.loadfromfile("c:\1pixel.gif")
'Response.BinaryWrite(objStream.read)
任何想法都歡迎。
我已經添加Page.ISPostback部分。如果我從標記調用它,所有代碼都可以正常工作,但是如果我直接從URL調用頁面,它將工作兩次,即使所有內容都位於Page.IsPostback檢查 – 2011-06-07 07:24:33
好吧,聽起來像是發生了什麼,因爲代碼在加載時,它正在加載,然後在圖像本身加載後再次初始化。你可以做一些檢查,看看代碼是被頁面還是img調用,然後在頁面調用時不執行代碼?或者,也許另一種選擇是將這些代碼放入img的加載函數(更改爲asp:image控件),並查看是否僅調用一次。 今天我會討論它,看看我是否可以複製/解決這個問題。 – akuta 2011-06-07 15:14:33
澄清有問題的代碼似乎在頁面加載時運行,然後在圖像代碼返回數據時再次運行。我今天早上看看它,看看我想出了什麼。 – akuta 2011-06-07 15:24:48