【发布时间】:2020-07-20 10:22:33
【问题描述】:
我有一个 Blazor 应用(服务器端),它作为 应用服务 托管在 Azure 中,我使用 Azure SignalR 服务 能够扩展同时连接的用户数量。我还有一个页面可以上传文件,文件可能很大,甚至 1GB 甚至更多,我正在使用 Tewr.Blazor.FileReader (Nuget) 读取文件并上传到将文件保存到服务器的 API。 但我想知道在上传文件时是否可以通过某种方式避免 SignalR 部分,因为对于 2GB 文件,Azure SignalR 将每条消息分成 2KB/每条,这表示我达到了 1M 消息/天/单位的限制,仅用于上传 1 个文件。 让我知道我可以解决这个问题的所有方法,目前我想到的解决方案很少:
- 将单独的 SignalR 应用程序 托管为 应用程序服务,而不是使用 Azure SignalR
- iframe 将该页面添加到 ASP.NET Core 应用程序,该应用程序只处理文件的传输。 (不确定这是否会触发 SignalR 流量)
【问题讨论】:
-
您是否尝试在 SignalR 配置中更改
ApplicationMaxBufferSize和TransportMaxBufferSize。 There is a library vendor sample -
@ASpirin 这不会解决问题,它会影响使用内置 SignalR 时的上传速度,但 Azure SignalR 默认情况下会将任何大于 2KB 的消息分解为 2KB/每个并处理它们。 (我可以有 10MB 的块,但是当它到达 Azure SignalR 服务时会被分解)
-
您确定要通过 SignalR 进行此操作吗?与普通的 HTTP API 端点相反?
-
有没有试过加石头JavsScript在浏览器中读取文件,然后http直接发布到api端点?
-
@HenkHolterman 我绝对想使用普通的 HTTP API 端点,但问题是,我如何实现它,据我所知,一切都通过 SignalR 与 Blazor 服务器端
标签: javascript c# azure signalr blazor