2013-03-14 1 views
1

Je suis nouveau sur asp.net et j'essaie de résoudre un problème.Conflits d'instances DLL ASP.NET

J'ai créé une page aspx simple (site Web ASP) qui fait référence à une classe vb.net. Je gère une instance de classe en utilisant l'objet de contexte de session (je ne sais pas s'il y a un meilleur moyen). La classe a un sous qui définit une valeur de chaîne et une fonction qui le renvoie.

Je compile et exécute le projet de site Web, puis définissez la valeur "1" d'une page aspx et la valeur "2" d'une autre page (j'ouvre un deuxième onglet ou navigateur en copiant-collez l'URL du premier page), puis récupérer les valeurs, les deux pages afficheront "2".

La même classe dans une application de formulaire vb.net (.exe) fonctionne très bien lorsque les instances exe sont en cours d'exécution, la première renvoie la valeur "1" et la seconde la valeur "2". C'est ainsi que je veux que cela fonctionne dans mon projet de site Web, différentes pages dll instances différentes.

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 
+0

Vous remplacez la valeur de session dans Tab2 par 2, donc il est prévu que vous retourniez 2 et non 1. Si vous voulez les garder séparés, jetez un coup d'œil à cette [SO Solution] (http://stackoverflow.com/a/ 2844472/125551) –

Répondre

0

Les deux pages partagent le même élément Session.Item ("ClassLibrary1"). Vous pouvez essayer de stocker la valeur dans un champ masqué ou une étiquette invisible.

+0

Information: C'est correct. Mais le même problème est apparu dans un autre .net dll (plus complexe) même si les éléments de session étaient correctement nommés. Nous trouvons que la cause du conflit a été détectée dans les variables déclarées à l'intérieur des modules vb.net (ou des classes statiques C#). En déplaçant les variables dans les classes (non statiques), le problème a été résolu. – Spyros