Share via


SignalR: tipo de opções de protocolo do hub MessagePack alterado

O tipo de opções do protocolo do hub de MessagePack do SignalR do ASP.NET Core foi alterado de IList<MessagePack.IFormatterResolver> para o tipo MessagePackSerializerOptions da biblioteca MessagePack.

Para ver discussão sobre essa alteração, confira dotnet/aspnetcore#20506.

Versão introduzida

5.0 versão prévia 4

Comportamento antigo

Você pode fazer adições às opções, conforme mostra este exemplo:

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

E substitua as opções da seguinte maneira:

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

Novo comportamento

Você pode fazer adições às opções, conforme mostra este exemplo:

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

E substitua as opções da seguinte maneira:

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

Motivo da alteração

Essa alteração faz parte da mudança para MessagePack v2.x, que foi anunciada em aspnet/Announcements#404. A biblioteca v2.x recebeu uma API de opções mais fácil de usar e oferece mais recursos do que a lista de MessagePack.IFormatterResolver que era exposta antes.

Essa alteração interruptiva afeta qualquer pessoa que esteja configurando valores em MessagePackHubProtocolOptions. Se você estiver usando o protocolo do hub de MessagePack do SignalR do ASP.NET Core e modificando as opções, atualize o tipo de uso para usar a API de novas opções, conforme mostrado acima.

APIs afetadas

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions