SignalR:MessagePack 中樞通訊協定選項類型已變更
ASP.NET Core SignalR MessagePack Hub 通訊協定選項類型已從 IList<MessagePack.IFormatterResolver>
變更為 MessagePack 程式庫的 MessagePackSerializerOptions
類型。
如需了解這項變更的討論,請參閱 dotnet/aspnetcore#20506。
導入的版本
5.0 Preview 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 Hub 通訊協定並修改選項,請更新使用方式,以便使用上方顯示的新選項 API。