ASP.NET DLL实例冲突

时间:2013-03-14 21:35:12

标签: asp.net vb.net

我是asp.net的新手,我正在尝试解决问题。

我创建了一个引用vb.net类的简单aspx页面(asp网站)。 我正在使用会话上下文对象处理一个类实例(不知道是否有更好的方法)。 该类有一个sub,用于设置字符串值和返回它的函数。

我编译并运行网站项目,然后从一个aspx页面设置值“1”,从另一个页面设置值“2”(我通过从第一页复制粘贴网址打开第二个选项卡或浏览器)然后检索值,两个页面都会显示“2”。

当exe实例运行时,vb.net表单应用程序(.exe)中的同一个类正常工作,第一个返回值“1”,第二个返回值“2”。这就是我希望它在我的网站项目中工作的方式,不同页面的不同dll实例。

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

1 个答案:

答案 0 :(得分:0)

两个页面共享相同的Session.Item(“ClassLibrary1”)。您可以尝试将值存储在隐藏字段或不可见标签中。