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.
Ação recomendada
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.