Sdílet prostřednictvím


SignalR: Změna typu možností protokolu centra MessagePack

Typ možností protokolu ASP.NET Core SignalR MessagePack Hub Protocol se změnil z IList<MessagePack.IFormatterResolver> typu knihovny MessagePackSerializerOptions MessagePack.

Diskuzi o této změně najdete v tématu dotnet/aspnetcore#20506.

Zavedená verze

5.0 Preview 4

Staré chování

Můžete přidat do možností, jak je znázorněno v následujícím příkladu:

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

A nahraďte tyto možnosti následujícím způsobem:

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

Nové chování

Můžete přidat do možností, jak je znázorněno v následujícím příkladu:

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

A nahraďte tyto možnosti následujícím způsobem:

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

Důvod změny

Tato změna je součástí přechodu na MessagePack verze 2.x, která byla oznámena v aspnet/Announcements#404. Knihovna v2.x přidala rozhraní API možností, které se snadněji používá a poskytuje více funkcí než seznam MessagePack.IFormatterResolver , který byl zpřístupněn dříve.

Tato změna způsobující chybu ovlivní každého, kdo konfiguruje hodnoty MessagePackHubProtocolOptions. Pokud používáte protokol centra ASP.NET Core SignalR MessagePack Hub a upravujete možnosti, aktualizujte využití tak, aby používalo nové rozhraní API možností, jak je znázorněno výše.

Ovlivněná rozhraní API

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions