我有一个将文件上传到服务器的应用程序。我正在使用 nettcpbinding 和 wshttpbinding。当文件大于 200 MB 时,出现内存异常。解决这个问题,我看到人们推荐流式传输,当然它适用于大文件(>1GB)的 nettcpbinding,但是当使用 wshttpbinding 时,方法是什么?我应该更改为 basichttpbinding 吗?什么??谢谢。
问问题
251 次
2 回答
1
我建议你暴露另一个端点只是为了上传这么大的数据。这可以有一个支持流的绑定。在我们之前的项目中,我们需要将文件上传到服务器作为业务流程的一部分。我们最终创建了 2 个端点,一个专门用于文件上传,另一个用于所有其他业务功能。
流式数据服务可以是一种通用服务,用于将任何数据流式传输到服务器,并可能返回用于标识服务器上数据的令牌。对于后续请求,可以传递此令牌以操作服务器上的数据。
于 2011-05-31T04:02:43.940 回答
0
如果您不想(或由于合法原因不能)更改绑定或使用流式传输,您可以做的是使用一些带有签名的方法,如下所示:
void UploadFile(string fileName, long offset, byte[] data)
您无需发送整个文件,而是发送小数据包,并告诉数据应该放在哪里。当然,您可以添加更多数据,例如整个文件大小、文件的 CRC 以了解传输是否成功等。
于 2011-05-30T18:13:30.433 回答