Share via


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。

受影響的 API

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions