Freigeben über


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

Der Optionstyp für das SignalR-MessagePack-Hubprotokoll in ASP.NET Core wurde von IList<MessagePack.IFormatterResolver> in den MessagePack-MessagePackSerializerOptions-Typ der Bibliothek geändert.

Diese Änderung wird unter dotnet/aspnetcore#20506 behandelt.

Eingeführt in Version

5.0 Preview 4

Altes Verhalten

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

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

Folgendermaßen können Sie Optionen ersetzen:

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

Neues Verhalten

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

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

Folgendermaßen können Sie Optionen ersetzen:

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

Grund für die Änderung

Diese Änderung ist Teil der Umstellung auf MessagePack 2.x, die unter aspnet/Announcements#404 angekündigt wurde. Der Bibliothek von Version 2.x wurde eine Options-API hinzugefügt, die einfacher zu verwenden ist und mehr Features als die zuvor verfügbare MessagePack.IFormatterResolver-Liste bietet.

Dieser Breaking Change wirkt sich auf alle Benutzer aus, die Werte in MessagePackHubProtocolOptions konfigurieren. Wenn Sie das SignalR-MessagePack-Hubprotokoll in ASP.NET Core verwenden und die Optionen ändern, stellen Sie sicher, dass die neue Options-API wie oben veranschaulicht verwendet wird.

Betroffene APIs

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions