【发布时间】: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