Jak uzyskać zmienną publiczną (w module), aby NIE udostępniać wartości między użytkownikami

Pracuję w aplikacji sieci Web ASP.NET (VB) z uwierzytelnianiem Windows / Active Directory

Używam modułu, dzięki czemu mogę wywoływać publiczne podprogramy i funkcje oraz zmienne odniesienia, bez konieczności tworzenia instancji nowego obiektu, aby uzyskać do nich dostęp na każdej stronie.

W tym module mam kilka zmiennych publicznych, których używam na wielu stronach w całej aplikacji internetowej. Ostatnio zdałem sobie sprawę, że wartości tych zmiennych publicznych w module są udostępniane wszystkim użytkownikom.

CEL: Chcę, aby wartość tych zmiennych globalnych była specyficzna dla pojedynczego użytkownika i nie była dzielona między wszystkie sesje, i nie chcę tworzyć instancji nowego obiektu / klasy na każdej stronie, która używa zmiennej.

CATCH: Nie chcę przechowywać wartości w zmiennej po stronie klienta, takiej jak plik cookie lub sesja. Chcę, aby wartość była przechowywana na serwerze, ale specyficzna dla każdego klienta / użytkownika.

Jedyne, co mogę myśleć, to skonfigurować globalną kolekcję / słownik i przechowywać zmienne z uwierzytelnionymi nazwami użytkowników, ale wtedy muszę mieć określone funkcje, aby uzyskać i ustawić wartości. Chociaż będzie to działać, wymaga wszystkich odniesień do tych zmiennych na wszystkich stronach w aplikacji, która ma zostać zaktualizowana.

PRZYKŁAD PROBLEMU: Poniższy kod pokazuje, w jaki sposób tworzę zmienną publiczną w module i jak wartość jest ustawiana z jednej strony i używana w innej. Chciałbym nadal używać tej zmiennej w ten sam sposób i udostępniać jej wartość między stronami, ale wartość zmiennej NIE może być udostępniana użytkownikom.

- MODULE.VB -

Public Module MyMod  
    Public myVariable as String = ""  
End Module  

- MAINPAGE.VB -

  Partial Class _Default  
        Sub Page_Load() Handles MyBase.Load()  
           myVariable = "HELLO WORLD"  
        End Sub  
    End Class  

- NEXTPAGE.VB -

  Partial Class _Default  
        Sub Page_Load() Handles MyBase.Load()  
           Response.Write(myVariable)  
        End Sub  
    End Class  

W tej aplikacji jest wiele stron, które trzeba będzie ręcznie zaktualizować, jeśli będę musiał użyć mojego systemu zbierania indeksowanego przez userID, więc mam nadzieję, że istnieje sposób, aby po prostu odmienić te zmienne inaczej lub sposób na wyłączenie udostępniania między sesjami. Z góry dziękuję!

questionAnswers(2)

yourAnswerToTheQuestion