Compartir a través de


RequestOptions.SessionToken Propiedad

Definición

Obtiene o establece el token para su uso con coherencia de sesión en el servicio Azure Cosmos DB.

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

Valor de propiedad

Token para su uso con coherencia de sesión.

Ejemplos

En este ejemplo se muestra cómo recuperar SessionToken de y ResourceResponse<TResource> , a continuación, usarlo en una instancia diferente de DocumentClient en RequestOptions Este ejemplo se supone que cada instancia del cliente se ejecuta desde código dentro de un appDomain diferente, como en nodos diferentes en el caso de varias aplicaciones web de nodo.

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;
}

Comentarios

Una de las ConsistencyLevel instancias de Azure Cosmos DB es Session. De hecho, este es el nivel deault aplicado a las cuentas.

Al trabajar con coherencia de sesión, a cada nueva solicitud de escritura en Azure Cosmos DB se le asigna un nuevo SessionToken. DocumentClient usará este token internamente con cada solicitud de lectura y consulta para asegurarse de que se mantiene el nivel de coherencia establecido.

En algunos escenarios debe administrar esta sesión usted mismo; Tenga en cuenta una aplicación web con varios nodos, cada nodo tendrá su propia instancia de DocumentClient Si desea que estos nodos participen en la misma sesión (para poder leer sus propias escrituras de forma coherente en los niveles web), tendría que enviar sessionToken desde ResourceResponse<TResource> la acción de escritura en un nodo al nivel de cliente, usar una cookie o algún otro mecanismo, y hacer que ese token vuelva al nivel web para las lecturas posteriores. Si usa un equilibrador de carga round robin que no mantiene la afinidad de sesión entre las solicitudes, como Azure Load Balancer, la lectura podría llegar a un nodo diferente a la solicitud de escritura, donde se creó la sesión.

Si SessionToken de Azure Cosmos DB no fluye tal y como se describió anteriormente, podría acabar con resultados de lectura incoherentes durante un período de tiempo.

Se aplica a

Consulte también