【问题标题】:Downloading a file greater than 20 MB using JSInterop call to a javascript causes a browser disconnection error使用 JSInterop 调用 javascript 下载大于 20 MB 的文件会导致浏览器断开连接错误
【发布时间】:2019-10-18 17:52:26
【问题描述】:

在我们的服务器端 blazor 应用程序中,我们可以选择使用 javascript 下载文件。问题是当我尝试下载大于 20 MB 的文件时,连接会关闭并且下载过程会中断。

浏览器会显示一条消息:

正在尝试重新连接到服务器...

浏览器控制台显示错误:

blazor.server.js:1 [2019-10-17T22:47:31.704Z] 错误:连接断开并出现错误“错误:WebSocket 关闭,状态码为:1006 ()。”。

有没有办法允许下载大文件?

为了下载大于 20 MB 的文件,我需要增加一些超时时间吗?

我试过了,没有任何改进:

services.AddServerSideBlazor( options => options.JSInteropDefaultCallTimeout = TimeSpan.FromSeconds(120));

javascript是:

function saveAsFile(filename, base64) {
    var array = Base64Binary.decode(base64);
    let blob = new Blob([array], {
        type: 'application/octet-stream'
    });

    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
        window.navigator.msSaveOrOpenBlob(blob, name);
    } else {
    var link = document.createElement('a');
    link.download = filename;
    let url = URL.createObjectURL(blob);
    link.download = filename;
    link.href = url;
    document.body.appendChild(link); // Needed for Firefox
    link.click();
    document.body.removeChild(link);
}

}

而javascript被称为:

public static ValueTask<object> SaveAs(IJSRuntime jsRuntime, string filename, byte[] data) => jsRuntime.InvokeAsync<object>("saveAsFile", filename, Convert.ToBase64String(data));

我的期望是允许我们的用户在不断开浏览器的情况下下载最大 150 MB 的文件。

【问题讨论】:

  • 听起来超时设置需要增加

标签: azure-web-app-service blazor


【解决方案1】:

似乎超出了消息缓冲区大小,您可以使用以下配置设置缓冲区大小。

endpoints.MapHub<ComponentHub>(
            ComponentHub.DefaultPath,
            o =>
            {
                o.ApplicationMaxBufferSize = 102400000; // larger size
                o.TransportMaxBufferSize = 102400000; // larger size
            })

参考:https://github.com/aspnet/AspNetCore/issues/9570#issuecomment-488649334

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2010-10-18
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多