C# Blazor Server与JS互操作无法获取大数据量返回值
Blazor Server模式
有一个截图功能,调用js获取截图的base64图像,当图像超过50k (可能更低,没有验证),c#代码无法获取base64字符串。
js:
function crop() {cropper.crop();let resultData = cropper.getCroppedCanvas();if (result) {result.innerHTML = '';result.appendChild(resultData);}//inst.invokeMethodAsync("GetResult", resultDataUrl);return resultData.toDataURL("image/jpeg", 0.8);
}
C#:
var base64encodedstring = await Module!.InvokeAsync<string>("crop");
拿不到js函数 "crop" 返回数据
private IJSObjectReference? Module { get; set; } public async Task<string> GetCropImage(){var base64encodedstring = await Module!.InvokeAsync<string>("crop");return base64encodedstring;}
解决:
可以设置Signalr 的最大接受size,这里我没有做限制,大概是因为BlazorServer是通过Signalr通讯连接的吧
services.AddSignalR(hubOptions =>{hubOptions.MaximumReceiveMessageSize = null;});