共用方式為


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);
    });

變更的原因

這項變更是移至在 aspnet/Announcements#404 中宣告的 MessagePack v2.x 的一部分。 v2.x 連結庫已新增選項 API,更容易使用,並提供的功能比之前公開的功能清單 MessagePack.IFormatterResolver 還多。

這項重大變更會影響任何在 MessagePackHubProtocolOptions上設定值的人員。 如果您使用 ASP.NET Core SignalR MessagePack Hub 通訊協定和修改選項,請更新您的使用方式以使用新的選項 API,如上所示。

受影響的 API

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions