Freigeben über


SignalR: Optionstyp für das MessagePack-Hubprotokoll geändert

Der Optionstyp des ASP.NET Core SignalR MessagePack Hub-Protokolls wurde von IList<MessagePack.IFormatterResolver> zum Typ der MessagePack-Bibliothek MessagePackSerializerOptions geändert.

Eine Diskussion zu dieser Änderung finden Sie unter dotnet/aspnetcore#20506.

Eingeführte Version

5.0 Vorschau 4

Altes Verhalten

Sie können Optionen hinzufügen, wie im folgenden Beispiel gezeigt:

services.AddSignalR()
    .AddMessagePackProtocol(options =>
    {
        options.FormatterResolvers.Add(MessagePack.Resolvers.StandardResolver.Instance);
    });

Und ersetzen Sie die Optionen wie folgt:

services.AddSignalR()
    .AddMessagePackProtocol(options =>
    {
        options.FormatterResolvers = new List<MessagePack.IFormatterResolver>()
        {
            MessagePack.Resolvers.StandardResolver.Instance
        };
    });

Neues Verhalten

Sie können Optionen hinzufügen, wie im folgenden Beispiel gezeigt:

services.AddSignalR()
    .AddMessagePackProtocol(options =>
    {
        options.SerializerOptions =
            options.SerializeOptions.WithResolver(MessagePack.Resolvers.StandardResolver.Instance);
    });

Und ersetzen Sie die Optionen wie folgt:

services.AddSignalR()
    .AddMessagePackProtocol(options =>
    {
        options.SerializerOptions = MessagePackSerializerOptions
                .Standard
                .WithResolver(MessagePack.Resolvers.StandardResolver.Instance)
                .WithSecurity(MessagePackSecurity.UntrustedData);
    });

Grund für Änderung

Diese Änderung ist Teil des Umstiegs auf MessagePack v2.x, das in aspnet/Announcements#404 angekündigt wurde. Die v2.x-Bibliothek hat eine Options-API hinzugefügt, die einfacher zu verwenden ist und mehr Funktionen bietet als die Liste, die zuvor durch MessagePack.IFormatterResolver verfügbar gemacht wurde.

Dieser Breaking Change wirkt sich auf alle Benutzer aus, die Werte in MessagePackHubProtocolOptions konfigurieren. Wenn Sie das ASP.NET Core SignalR MessagePack Hub Protocol verwenden und die Optionen ändern, aktualisieren Sie Ihre Verwendung, um die neue Options-API zu verwenden, wie oben gezeigt.

Betroffene APIs

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions