【发布时间】:2011-09-02 14:47:40
【问题描述】:
请帮忙!我还在学习,所以这可能是完全错误的。我为内部目的构建了一个多用户 Web 应用程序。我已经拆分了我的代码以使其更易于管理并且遇到了一些问题。我怀疑我做了什么很傻的事情!
我在 App_Code 的单独文件 (quoteStatus.vb) 中有一个类:
Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Imports System.Data
Public Class quoteStatusHelper
Public Shared QuoteStatus As String
Public Shared Sub GetQuoteStatus(ByVal QuoteID As String)
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Try
con.ConnectionString = ConfigurationManager.AppSettings("quotingSystemConnectionString")
con.Open()
cmd.Connection = con
cmd.CommandText = "SELECT Status FROM Quote WHERE QuoteID =" & QuoteID & ";"
Dim lrd As SqlDataReader = cmd.ExecuteReader()
While lrd.Read()
QuoteStatus = lrd("Status")
End While
Catch ex As Exception
Finally
con.Close()
End Try
End Sub
End Class
我用它来触发另一个文件中的代码:
quoteStatusHelper.GetQuoteStatus(QuoteID)
然后用
抓取结果Dim returnedStatus = quoteStatusHelper.QuoteStatus
这似乎真的错了,因为在第一次运行之后,该值似乎保存在部分类中。因此,如果我有两个用户访问该课程,则两个用户的公共共享昏暗都会更改!必须有更好的方法来做到这一点。到处看了看,现在比刚开始的时候更迷茫……
如何使分部类中的 QuoteStatus 对每个用户都是唯一的,并从我的代码中访问它。我想不通:(请帮忙
非常感谢。
【问题讨论】:
-
如果传递给 GetQuoteStatus 方法的 QuoteID 是“1;从 QuoteID > 1 的报价中删除”会发生什么?注意:不要尝试,只是警告 SQL 注入攻击。
-
您好,感谢您的提醒。注射是我知道的,但我还没有学会如何避免它。尽管此应用程序将是一个仅通过 IIS 上的 IP 限制对特定人员开放的系统,但我很想知道将来我能做些什么来避免这种情况。非常感谢
-
这行
quoteSelectHelper.GetQuoteInfo(QuoteID)是真的还是应该是quoteStatusHelper.GetQuoteInfo(QuoteID)? -
嗨 @Chris 是的,抱歉,这是一个错字……很好发现!