SignalR: изменен тип параметров протокола MessagePack Hub
Тип параметров протокола концентратора MessagePack ASP.NET Core SignalR изменился с IList<MessagePack.IFormatterResolver>
на тип MessagePackSerializerOptions
библиотеки MessagePack.
Обсуждение этого изменения см. на странице dotnet/aspnetcore#20506.
Представленные версии
5.0, предварительная версия 4
Старое поведение
Можно добавить параметры, как показано в следующем примере:
services.AddSignalR()
.AddMessagePackProtocol(options =>
{
options.FormatterResolvers.Add(MessagePack.Resolvers.StandardResolver.Instance);
});
И заменить параметры следующим образом:
services.AddSignalR()
.AddMessagePackProtocol(options =>
{
options.FormatterResolvers = new List<MessagePack.IFormatterResolver>()
{
MessagePack.Resolvers.StandardResolver.Instance
};
});
Новое поведение
Можно добавить параметры, как показано в следующем примере:
services.AddSignalR()
.AddMessagePackProtocol(options =>
{
options.SerializerOptions =
options.SerializeOptions.WithResolver(MessagePack.Resolvers.StandardResolver.Instance);
});
И заменить параметры следующим образом:
services.AddSignalR()
.AddMessagePackProtocol(options =>
{
options.SerializerOptions = MessagePackSerializerOptions
.Standard
.WithResolver(MessagePack.Resolvers.StandardResolver.Instance)
.WithSecurity(MessagePackSecurity.UntrustedData);
});
Причина изменения
Это изменение является частью перехода к MessagePack v2.x, который был объявлен на странице aspnet/Announcements#404. В библиотеку v2.x добавлен API параметров, который проще в использовании и предоставляет больше возможностей, чем список MessagePack.IFormatterResolver
, представленный ранее.
Рекомендуемое действие
Это критическое изменение затрагивает всех, кто настраивает значения на MessagePackHubProtocolOptions. Если вы используете протокол концентратора MessagePack ASP.NET Core SignalR и изменяете параметры, внесите изменения, чтобы использовать новый API параметров, как показано выше.