ASP.NET - Transferindo dados entre páginas

As diversas formas de transferência de dados no ASP.NET normalmente geram confusão para o desenvolvedor. Algumas formas já são conhecidas do ASP3, outras são completamente novas, novidades do ASP.NET. Vejamos quais são :

Entre PostBacks
Podemos usar o ViewState para guardar informações entre os postbacks

Entre páginas do mesmo site, em diferentes requisições
Neste caso precisamos utilizar o ambiente de sessão

Entre usuários no mesmo site
Para que uma informação seja compartilhada entre muitos usuários precisamos utilizar o ambiente de aplicação (APPLICATION) ou Cache

Entre páginas ou módulos, em uma mesma requisição
Esta é uma novidade ainda pouco conhecida do ASP.NET. Dentro de uma requisição web podem ser trocadas informações entre páginas, classes ou módulos utilizando o contexto de execução. Veja algumas situações em que isso se aplica :

- Várias classes utilizadas em um mesmo postback podem trocar dados através deste recurso
- Páginas utilizando server.transfer ficam em um mesmo contexto e podem trocar dados utilizando este recurso.

Acessando o contexto HTTP atual pode-se inserir informações e recupera-las. Veja:

Inserindo uma informação: httpcontext.current.items.add("info")=1
Lendo uma informação:     info=httpcontext.current.items("info")