ASP.NET DLL instances conflict
我刚接触ASP.NET,正在尝试解决一个问题。
我创建了一个简单的ASPX页面(ASP网站),它引用了一个VB.NET类。我正在使用会话上下文对象处理一个类实例(不知道是否有更好的方法)。该类有一个子类,它设置一个字符串值和一个返回该值的函数。
我编译并运行网站项目,然后从一个ASPX页面设置值"1",从另一个页面设置值"2"(我通过复制粘贴第一页的URL打开第二个选项卡或浏览器),然后检索这些值,两个页面都将显示"2"。
VB.NET窗体应用程序(.exe)中的同一类在运行exe实例时工作正常,第一个类返回值"1",第二个类返回值"2"。这就是我希望它在我的网站项目中工作的方式,不同的页面,不同的DLL实例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | Class: Public Class Class1 Private sExten As String Public Sub setExten(value As String) sExten = value End Sub Public Function getExten() As String Return sExten End Function End Class aspx: Partial Class _Default Inherits System.Web.UI.Page 'trying to ensure one instance is running Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then Session.Add("ClassLibrary1", New ClassLibrary1.Class1) End If End Sub 'txtSetValue.text contains value"1" or"2" Protected Sub btnSet_Click(sender As Object, e As EventArgs) Handles btnSet.Click CType(Session.Item("ClassLibrary1"), ClassLibrary1.Class1).setExten(txtSetValue.text) End Sub 'the txtShowValue shows"1" in the first and"2" in the second page Protected Sub BtnGet_Click(sender As Object, e As EventArgs) Handles BtnGet.Click txtShowValue.Text = CType(Session.Item("ClassLibrary1"), ClassLibrary1.Class1).getExten() End Sub End Class |
两个页面共享同一个session.item("ClassLibrary1")。您可以尝试将值存储在隐藏字段或不可见标签中。