зеркало из https://github.com/telerik/blazor-docs.git
2.7 KiB
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 throwsMicrosoft.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:
- Technical description of the cause in the
aspnetcore
GitHub repository - Closed issue in the
aspnetcore
GitHub repository - Similar StackOverflow thread about the Blazor
InputFile
component.
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%})