Como obter uma variável pública (em um módulo) para não compartilhar valor entre usuários

Estou trabalhando em um aplicativo da Web ASP.NET (VB) com Windows / autenticação de diretório ativo

Eu estou usando um módulo para que eu possa chamar sub-rotinas públicas e funções e variáveis ​​de referência, sem ter que instanciar um novo objeto para acessá-los em cada página.

Dentro desse módulo, tenho algumas variáveis ​​públicas que estou usando em várias páginas em todo o aplicativo da web. Recentemente, percebi que os valores para essas variáveis ​​públicas no módulo são compartilhados entre todos os usuários.

O OBJETIVO: Eu quero que o valor dessas variáveis ​​globais seja específico para um único usuário e não seja compartilhado entre todas as sessões, e eu não quero ter que instanciar um novo objeto / classe em cada página que usa a variável.

O CATCH: Eu não quero armazenar o valor em uma variável do lado do cliente, como um cookie ou sessão. Eu quero o valor a ser armazenado no servidor, mas específico para cada cliente / usuário.

A única coisa que posso pensar é configurar uma coleção / dicionário global e armazenar as variáveis ​​com os nomes de usuário autenticados, mas, em seguida, preciso ter funções específicas para obter e definir os valores. Embora isso funcione, ele exige que todas as referências a essas variáveis ​​em todas as páginas do aplicativo sejam atualizadas.

EXEMPLO DO PROBLEMA: O código abaixo mostra como estou criando a variável pública dentro do módulo e como o valor está sendo definido a partir de uma página e usado em outro. Eu gostaria de continuar a usar essa variável da mesma forma e compartilhar seu valor entre as páginas, mas o valor da variável NÃO precisa ser compartilhado entre os usuários.

- 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  

Há MUITAS páginas neste aplicativo que precisarão ser atualizadas manualmente se eu tiver que usar minha solução de coleção indexada pelo ID do usuário, portanto, espero que haja uma maneira de simplesmente definir o escopo dessas variáveis ​​de maneira diferente ou uma maneira de desabilitar o compartilhamento entre as sessões. Desde já, obrigado!

questionAnswers(2)

yourAnswerToTheQuestion