Compartir a través de


SignalR: se ha cambiado el tipo de opciones del protocolo de concentrador de MessagePack

El tipo de opciones del protocolo de concentrador de MessagePack de ASP.NET Core SignalR ha cambiado de IList<MessagePack.IFormatterResolver> al tipo de de la biblioteca de MessagePackSerializerOptions.

Para obtener información sobre este cambio, vea dotnet/aspnetcore#20506.

Versión introducida

5.0 (versión preliminar 4)

Comportamiento anterior

Puede agregar a las opciones como se muestra en el ejemplo siguiente:

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

Y reemplace las opciones de la siguiente manera:

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

Nuevo comportamiento

Puede agregar a las opciones como se muestra en el ejemplo siguiente:

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

Y reemplace las opciones de la siguiente manera:

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

Motivo del cambio

Este cambio forma parte de la migración a MessagePack v2.x, que se anunció en aspnet/Announcements#404. La biblioteca v2.x ha agregado una API de opciones que es más fácil de usar y proporciona más características que la lista de MessagePack.IFormatterResolver que se ha expuesto antes.

Este cambio importante afecta a todos los usuarios que configuren valores en MessagePackHubProtocolOptions. Si está usando el protocolo de Hub MessagePack de ASP.NET Core SignalR y modifica las opciones, actualice su uso para emplear la nueva API de configuración, tal como se muestra arriba.

Las APIs afectadas

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions