通过SignalR获取大数据——Blazor

Getting big data through SignalR - Blazor

我有一个组件库,它使用 JS 代码将图像生成为 base64 字符串,并且图像需要转置为 C#。图片尺寸大于MaximumReceiveMessageSize

我可以在 C# 中获取 MaximumReceiveMessageSize 属性 的值吗?我需要一种将图片正确分割成块的方法,或其他传输方式。

我的组件可以在 Wasm 或服务器应用程序中使用。我无法更改 MaximumReceiveMessageSize 属性.

的值

谢谢

使用 Stream from JavaScript to .NET 中描述的流解决了我的问题。

来自微软文档:

在JavaScript中:

function streamToDotNet() {
    return new Uint8Array(10000000);
}

在 C# 代码中:

var dataReference = await JS.InvokeAsync<IJSStreamReference>("streamToDotNet");
using var dataReferenceStream = await dataReference.OpenReadStreamAsync(maxAllowedSize: 10_000_000);
var outputPath = Path.Combine(Path.GetTempPath(), "file.txt");
using var outputFileStream = File.OpenWrite(outputPath);
await dataReferenceStream.CopyToAsync(outputFileStream);

在前面的例子中:JS是一个注入的IJSRuntime实例。 dataReferenceStream 被写入当前用户临时文件夹路径 (GetTempPath) 的磁盘 (file.txt)。