SignalR:MessagePack ハブ プロトコル オプションの種類を変更

ASP.NET Core SignalR MessagePack ハブ プロトコルのオプションの型が 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 ハブ プロトコルを使用しているとき、このオプションを変更する場合、上の画像のように新しいオプション API を使用するように使用状況を更新します。

影響を受ける API

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions