blazor-docs/knowledge-base/fileselect-autofac.md

2.7 KiB

title description type page_title slug tags ticketid res_type
FileSelect ReadAsync Method Throws JsonException Learn how to resolve an exception about JSON serialization attempting to deserialize an unexpected byte array when using the Telerik Blazor FileSelect. troubleshooting FileSelect ReadAsync Method Throws JsonException fileselect-kb-autofac telerik, blazor, fileselect, autofac, dependency injection 1637702, 1634460, 1634313, 1632874 kb

Environment

Product FileSelect for Blazor
Version 5.0.0 and above

Description

This knowledge base article deals with the following issues:

  • The FileSelect component's file stream ReadAsync method throws Microsoft.JSInterop.JSException.
  • FileSelect file stream reading fails when using builder.Host.UseServiceProviderFactory.
  • An exception occurs when trying to upload files through Blazor FileSelect with Autofac dependency injection enabled.

Error Message

Microsoft.JSInterop.JSException: JSON serialization is attempting to deserialize an unexpected byte array.
    at System.Threading.Tasks.ValueTask`1.get_Result()
    at Telerik.Blazor.Components.FileSelect.Stream.FileInfoStream.<ReadBytesAsync>d__24.MoveNext()

Cause

The problem can occur when an Inversion of Control (IoC) container interferes with the SignalR hub operation. For example, we have received reports about Autofac:

caption Program.cs

builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());

The problem does not occur in FileSelect versions before 5.0.0, because the component used a slower legacy file management mechanism with string instead of byte[].

The following resources provide additional details:

Solution

To avoid the error, disable implicit parameters from services in the Blazor hub configuration:

caption Program.cs

builder.Services.AddHubOptions(options =>
{
    options.DisableImplicitFromServicesParameters = true;
});

See Also

  • [FileSelect Overview]({%slug fileselect-overview%})