我有一个Blazor应用程序(服务器端(,它托管在Azure中,作为应用程序服务。我使用Azure SignalR服务ewr.Blazor.FileReader(Nuget(来分块读取文件,并将其上传到API,该API将文件保存到服务器但我想知道在上传文件时是否可以以某种方式避免SignalR部分,因为对于2GB文件,Azure SignalR将每条消息分解为2KB/每条。这意味着我达到了1M条消息/天/单位的限制,仅上传1个文件。让我知道我可以解决这个问题的所有方法,目前我有几个解决方案:
- 将单独的SignalR应用程序托管为应用程序服务,而不是使用Azure SignalR
- iframe该页面到仅处理文件传输的ASP.NET核心应用程序。(不确定这是否会触发SignalR流量(
如果使用标准DOM事件(例如onchanged=someJavaSciptFunction
(,则浏览器将运行JavaScript来响应该事件。
如果您在UI元素上设置了适当的JS脚本,那么您可以让JS向您的API发出HTTP请求。这将完全避免SignalR。
您可以将文件上传到Web API控制器。您甚至可以在同一项目中添加控制器。我认为DevExpress Blazor FileUpload使用了这种方法。
但是自己实现它应该很容易。您需要一些javascript来将文件内容发布到Web API控制器。这个博客可以帮助你。