Blazor服务器-到1006的websocket连接失败-PDF Viewer(文件大小为13mb到20mb)



大家好

我在使用Blazor Server(ASP.NET Core(使用pdf查看器时遇到了一个问题,当我们在暂存环境中部署它时会发生错误,文件类型是pdf,通常的文件大小是13 mb到20 mb。

当我们的QA测试pdf查看器时,他遇到了这个错误:

";WebSocket已关闭,状态代码为:1006((">

pdf查看器无法工作。这种情况很可能发生在使用公司的VPN时,因为每个人都在家工作,但当在办公室使用直接网络连接测试pdf查看器时,pdf查看器正在工作

这是我调用PDF查看器的代码:

代码背后:

//Get File from service
objFile = await myServices.GetFile(Id);
byte[] byteArray = objFile.Data;
PDFFilePath = await jSRuntime.InvokeAsync<string>("getBlobObject", Convert.ToBase64String(byteArray));

Javascript:

函数getBlob对象(b64Data({

const blob = base64ToBlob(b64Data, 'application/pdf');
const url = URL.createObjectURL(blob);

var setpdf = url;
return setpdf;
function base64ToBlob(base64, type = "application/octet-stream") {
const binStr = atob(base64);
const len = binStr.length;
const arr = new Uint8Array(len);
for (let i = 0; i < len; i++) {
arr[i] = binStr.charCodeAt(i);
}
return new Blob([arr], { type: type });
}

}

Razor页面:

<div class="d-flex flex-wrap" id="div-pdf">
<iframe src="@PDFFilePath" type="application/pdf" width="100%" height="100%" style="overflow: auto;width:100%; height:746px;"></iframe>'

有办法解决这个问题吗?尤其是在使用公司的VPN访问应用程序时?有更好的方法来实现这一点吗?

谢谢大家并致以问候。

创意一

确保已启用LongPolling

options.Transports = HttpTransportType.WebSockets | HttpTransportType.LongPolling;

来自官方文档。

无法使用长轮询回退传输通过WebSockets进行连接。这可能是由于VPN或代理阻止了连接。

因此,如果我们启用LongPolling,也许我们可以通过使用LongPolling来解决这个问题。

想法二

  1. 尝试创建一个只有一个页面的pdf文件,并在vpn网络下进行测试,看看这个问题是否可以重现。

  2. 如果问题消失了,我们可以搜索更多关于在分页中加载PDF文件的信息。

最新更新