ASP.NET Core SignalR 的 MessagePack Hub 协议选项类型已经从 IList<MessagePack.IFormatterResolver>
类型更改为 MessagePack 库的 MessagePackSerializerOptions
类型。
有关此更改的讨论,请参阅 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);
});
更改原因
此更改是迁移到在 aspnet/Announcements#404 中宣布的 MessagePack v2.x 的一部分。 v2.x 库添加了一个选项 API,该 API 更易于使用,并提供的功能比之前公开的功能列表 MessagePack.IFormatterResolver
更多。
建议的措施
此重大更改将影响在 MessagePackHubProtocolOptions 上配置值的用户。 如果使用 ASP.NET Core SignalR MessagePack 中心协议并修改这些选项,请更新用法以使用新的选项 API,如上所示。