SignalR:MessagePack 中心协议选项类型已更改
ASP.NET Core SignalR MessagePack 中心协议选项类型已从 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);
});
更改原因
此更改是迁移到 MessagePack v2.x 的一部分,已在 aspnet/Announcements#404 中公布。 v2.x 库添加了一个更易于使用的选项 API,提供的功能比之前公开的 MessagePack.IFormatterResolver
的列表更多。
建议操作
此重大更改将影响在 MessagePackHubProtocolOptions 上配置值的用户。 如果使用 ASP.NET Core SignalR MessagePack 中心协议并修改这些选项,请更新用法以使用新的选项 API,如上所示。
受影响的 API
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈