Udostępnij za pośrednictwem


SignalR: zmieniono typ opcji protokołu centrum MessagePack

Typ opcji protokołu ASP.NET Core SignalR MessagePack Hub został zmieniony z IList<MessagePack.IFormatterResolver> na typ biblioteki MessagePackSerializerOptions MessagePack.

Aby zapoznać się z tą zmianą, zobacz dotnet/aspnetcore#20506.

Wprowadzona wersja

5.0 (wersja zapoznawcza 4)

Stare zachowanie

Możesz dodać do opcji, jak pokazano w poniższym przykładzie:

services.AddSignalR()
    .AddMessagePackProtocol(options =>
    {
        options.FormatterResolvers.Add(MessagePack.Resolvers.StandardResolver.Instance);
    });

Zastąp opcje w następujący sposób:

services.AddSignalR()
    .AddMessagePackProtocol(options =>
    {
        options.FormatterResolvers = new List<MessagePack.IFormatterResolver>()
        {
            MessagePack.Resolvers.StandardResolver.Instance
        };
    });

Nowe zachowanie

Możesz dodać do opcji, jak pokazano w poniższym przykładzie:

services.AddSignalR()
    .AddMessagePackProtocol(options =>
    {
        options.SerializerOptions =
            options.SerializeOptions.WithResolver(MessagePack.Resolvers.StandardResolver.Instance);
    });

Zastąp opcje w następujący sposób:

services.AddSignalR()
    .AddMessagePackProtocol(options =>
    {
        options.SerializerOptions = MessagePackSerializerOptions
                .Standard
                .WithResolver(MessagePack.Resolvers.StandardResolver.Instance)
                .WithSecurity(MessagePackSecurity.UntrustedData);
    });

Przyczyna wprowadzenia zmiany

Ta zmiana jest częścią przejścia do pakietu MessagePack w wersji 2.x, która została ogłoszona w pliku aspnet/Announcements#404. Biblioteka w wersji 2.x dodała interfejs API opcji, który jest łatwiejszy w użyciu i udostępnia więcej funkcji niż lista MessagePack.IFormatterResolver , która została udostępniona wcześniej.

Ta zmiana powodująca niezgodność dotyczy każdego, kto konfiguruje wartości w programie MessagePackHubProtocolOptions. Jeśli używasz ASP.NET Core SignalR MessagePack Hub Protocol i modyfikujesz opcje, zaktualizuj użycie, aby użyć nowego interfejsu API opcji, jak pokazano powyżej.

Dotyczy interfejsów API

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions