SignalR : Le type d’options du protocole MessagePack Hub a été modifié

Le type d’options du protocole MessagePack Hub dans SignalR est passé du type IList<MessagePack.IFormatterResolver> au type MessagePackSerializerOptions de la bibliothèque MessagePack.

Pour plus d’informations sur ce changement, consultez dotnet/aspnetcore#20506.

Version introduite

5.0 Préversion 4

Ancien comportement

Vous pouvez l’ajouter aux options comme indiqué dans l’exemple suivant :

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

Et remplacez les options comme suit :

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

Nouveau comportement

Vous pouvez l’ajouter aux options comme indiqué dans l’exemple suivant :

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

Et remplacez les options comme suit :

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

Raison du changement

Ce changement fait partie du passage à MessagePack v2.x, qui a été annoncé dans aspnet/Announcements#404. La bibliothèque v2.x a ajouté une API d’options plus facile à utiliser et fournit plus de fonctionnalités que la liste des MessagePack.IFormatterResolver exposée précédemment.

Ce changement cassant affecte toute personne qui configure des valeurs sur MessagePackHubProtocolOptions. Si vous utilisez le protocole MessagePack Hub dans SignalR ASP.NET Core et que vous modifiez les options, mettez à jour votre utilisation pour utiliser la nouvelle API d’options, comme indiqué ci-dessus.

API affectées

Microsoft.AspNetCore.SignalR.MessagePackHubProtocolOptions