关于多个客户端同时访问服务端程序问题,求教
我们做了一个ASP.net的数据库访问系统,但是启动的时候存在这样的问题:两台或两台以上的客户端访问服务端的ASP.net程序的时候,如果是同时访问同一个程序,则只有其中一台客户端能够正确显示程序界面,其余的不行。访问数据库的时候,两台以上的客户端同时通过服务端的Asp.net程序访问数据库的时候,则只能有一台并且只有一台能够得到需要的数据,其余的没有反映,此问题非常棘手,希望高人赐教。
现将该程序的一部分代码附上,希望高人能够指点迷津。
//后台页面加载函数(连接数据库和初始化)
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
objDFSMS0050 = SingletonManager.GetInstance(Session, GetType(DFSMS0050.DFSMS0050.inst)) //初始化
If Not IsPostBack Then
objORAENV.ConnectString = Right(Request.Url.Query.ToString, Len(Request.Url.Query.ToString) - 1)
Call Set_TextBox(Me)
strTitle = SetAtr_SMF0050() //用简单的读取txt文件的方法将界面上的文字按照txt文件的指定显示出来
ORA_CHECK() //连接Oracle数据库
.............
End If
End Sub
说明:初始化是对该程序用到的“公用”变量初始化,这些变量背封装在一个类中,例如:
Public Class DFSMS0050
Inherits System.Web.UI.Page
Public Class inst : Inherits System.Web.UI.Page : Implements ISingleton
Public SAV_LANG_CLS As New VB6.FixedLengthString(2)
.................
End Class
Private p As inst
Private Sub New()
p = SingletonManager.GetInstance(Session, GetType(inst))
End Sub
End Class
并作如下定义:
Public objDFSMS0050 As DFSMS0050.inst
关于“objDFSMS0050 = SingletonManager.GetInstance(Session, GetType(DFSMS0050.DFSMS0050.inst))”的SingletonManager是这样定义的:
Public Interface ISingleton
End Interface
Public NotInheritable Class SingletonManager
Public Shared Function GetInstance(ByRef s As Web.SessionState.HttpSessionState, ByVal tp As Type) As ISingleton
Dim obj As Object = s.Item(tp.ToString)
If obj Is Nothing Then
Dim con As System.Reflection.ConstructorInfo = tp.GetConstructor(System.Type.EmptyTypes)
obj = con.Invoke(New Object() {})
s.Add(tp.ToString, obj)
End If
Return obj
End Function
End Class
多客户端同时访问的问题非常急,请高人指点迷津,在此先谢了~~~~