Partilhar via


RequestOptions.SessionToken Propriedade

Definição

Obtém ou define o token para uso com consistência de sessão no serviço do Azure Cosmos DB.

public string SessionToken { get; set; }
member this.SessionToken : string with get, set
Public Property SessionToken As String

Valor da propriedade

O token para uso com consistência de sessão.

Exemplos

Este exemplo mostra como você pode recuperar o SessionToken de um ResourceResponse<TResource> e, em seguida, usá-lo em uma instância diferente de DocumentClient em RequestOptions Este exemplo pressupõe que cada instância do cliente está em execução a partir do código em um AppDomain diferente, como em nós diferentes no caso de vários nós de aplicativo Web

string sessionToken;
string docSelfLink;

using (DocumentClient client = new DocumentClient(new Uri(""), ""))
{
    ResourceResponse<Document> response = client.CreateDocumentAsync(collection.SelfLink, new { id = "an id", value = "some value" }).Result;
    sessionToken = response.SessionToken;
    Document created = response.Resource;
    docSelfLink = created.SelfLink;
}

using (DocumentClient client = new DocumentClient(new Uri(""), ""))
{
    ResourceResponse<Document> read = client.ReadDocumentAsync(docSelfLink, new RequestOptions { SessionToken = sessionToken }).Result;
}

Comentários

Um dos para o ConsistencyLevel Azure Cosmos DB é Session. Na verdade, esse é o nível de padrão aplicado às contas.

Ao trabalhar com consistência de Sessão, cada nova solicitação de gravação para o Azure Cosmos DB recebe um novo SessionToken. O DocumentClient usará esse token internamente com cada solicitação de leitura/consulta para garantir que o nível de consistência definido seja mantido.

Em alguns cenários, você precisa gerenciar esta Sessão por conta própria; Considere um aplicativo Web com vários nós, cada nó terá sua própria instância de DocumentClient Se você quisesse que esses nós participassem da mesma sessão (para poder ler suas próprias gravações consistentemente entre camadas da Web), você teria que enviar o SessionToken da ação de ResourceResponse<TResource> gravação em um nó para a camada de cliente, usando um cookie ou algum outro mecanismo e faça com que esse token flua de volta para a camada da Web para leituras subsequentes. Se você estiver usando um balanceador de carga de distribuição equilibrada que não mantém a afinidade de sessão entre as solicitações, como o Azure Load Balancer, a leitura poderá chegar a um nó diferente da solicitação de gravação, onde a sessão foi criada.

Se você não transmitir o SessionToken do Azure Cosmos DB, conforme descrito acima, poderá acabar com resultados de leitura inconsistentes por um período de tempo.

Aplica-se a

Confira também