Auf Englisch lesen

Teilen über


Konvertieren von Sitzungstokenformaten im .NET SDK

GILT FÜR: NoSQL

In diesem Artikel wird erläutert, wie Sie verschiedene Sitzungstokenformate konvertieren, um die Kompatibilität zwischen den SDK-Versionen sicherzustellen.

Hinweis

Standardmäßig verfolgt das SDK das Sitzungstoken automatisch und verwendet das aktuelle Sitzungstoken. Weitere Informationen finden Sie unter Verwenden von Sitzungstoken. Die Anweisungen in diesem Artikel gelten nur unter den folgenden Bedingungen:

  • Ihr Azure Cosmos DB-Konto verwendet die Sitzungskonsistenz.
  • Sie verwalten die Sitzungstoken manuell.
  • Sie verwenden mehrere SDK-Versionen gleichzeitig.

Sitzungstokenformate

Es gibt zwei Sitzungstokenformate: Einfach und Vektor. Diese zwei Formate sind nicht austauschbar, sodass das Format bei der Übergabe an die Clientanwendung mit unterschiedlichen Versionen konvertiert werden muss.

  • Das Sitzungstokenformat Einfach wird von .NET SDK V1 (Microsoft.Azure.DocumentDB-Version 1.x) verwendet.
  • Das Sitzungstokenformat Vektor wird von .NET SDK V2 (Microsoft.Azure.DocumentDB-Version 2.x) verwendet.

Einfaches Sitzungstoken

Ein einfaches Sitzungstoken weist das folgende Format auf: {pkrangeid}:{globalLSN}

Vektorsitzungstoken

Ein Vektorsitzungstoken weist das folgende Format auf: {pkrangeid}:{Version}#{GlobalLSN}#{RegionId1}={LocalLsn1}#{RegionId2}={LocalLsn2}....#{RegionIdN}={LocalLsnN}

Konvertieren in ein einfaches Sitzungstoken

Um ein Sitzungstoken mit .NET SDK V1 an den Client zu übergeben, verwenden Sie das Sitzungstokenformat Einfach. Verwenden Sie z. B. den folgenden Beispielcode, um das Format zu konvertieren.

C#
private static readonly char[] SegmentSeparator = (new[] { '#' });
private static readonly char[] PkRangeSeparator = (new[] { ':' });

// sessionTokenToConvert = session token from previous response
string[] items = sessionTokenToConvert.Split(PkRangeSeparator, StringSplitOptions.RemoveEmptyEntries);
string[] sessionTokenSegments = items[1].Split(SessionTokenHelpers.SegmentSeparator, StringSplitOptions.RemoveEmptyEntries);

string sessionTokenInSimpleFormat;

if (sessionTokenSegments.Length == 1)
{
    // returning the same token since it already has the correct format
    sessionTokenInSimpleFormat = sessionTokenToConvert;
}
else
{
    long version = 0;
    long globalLSN = 0;

    if (!long.TryParse(sessionTokenSegments[0], out version)
        || !long.TryParse(sessionTokenSegments[1], out globalLSN))
    {
        throw new ArgumentException("Invalid session token format", sessionTokenToConvert);
    }

    sessionTokenInSimpleFormat = string.Format("{0}:{1}", items[0], globalLSN);
}

Konvertieren in ein Vektorsitzungstoken

Um ein Sitzungstoken mit .NET SDK V2 an den Client zu übergeben, verwenden Sie das Sitzungstokenformat Vektor. Verwenden Sie z. B. den folgenden Beispielcode, um das Format zu konvertieren.

C#

private static readonly char[] SegmentSeparator = (new[] { '#' });
private static readonly char[] PkRangeSeparator = (new[] { ':' });

// sessionTokenToConvert = session token from previous response
string[] items = sessionTokenToConvert.Split(PkRangeSeparator, StringSplitOptions.RemoveEmptyEntries);
string[] sessionTokenSegments = items[1].Split(SegmentSeparator, StringSplitOptions.RemoveEmptyEntries);

string sessionTokenInVectorFormat;

if (sessionTokenSegments.Length == 1)
{
    long globalLSN = 0;
    if (long.TryParse(sessionTokenSegments[0], out globalLSN))
    {
        sessionTokenInVectorFormat = string.Format("{0}:-2#{1}", items[0], globalLSN);
    }
    else
    {
        throw new ArgumentException("Invalid session token format", sessionTokenToConvert);
    }
}
else
{
    // returning the same token since it already has the correct format
    sessionTokenInVectorFormat = sessionTokenToConvert;
}

Nächste Schritte

Lesen Sie die folgenden Artikel: