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.
Zalecana akcja
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.