我有一个将文件上传到服务器的应用程序。我正在使用nettcpbinding和wshttpbinding。当文件大于200 MB时,我收到内存异常。解决这个问题,我看到人们推荐使用流媒体,当然它适用于大文件的nettcpbinding(> 1GB),但是当使用wshttpbinding时,会采用什么方法?我应该改为basichttpbinding吗?什么??感谢。
答案 0 :(得分:1)
我建议你公开另一个终点只是为了上传这么大的数据。这可以具有支持流式传输的绑定。在我们之前的项目中,我们需要将文件上传到服务器,作为业务流程的一部分。我们最终创建了两个端点,一个专门用于文件上载,另一个端点用于所有其他业务功能 流数据服务可以是将任何数据流式传输到服务器的通用服务,并且可能返回用于识别服务器上的数据的令牌。对于后续请求,可以传递该令牌以操纵服务器上的数据。
答案 1 :(得分:0)
如果你不想(或因为合法的原因不能)改变绑定也不使用流式传输,那么你可以做的就是有一些带有签名的方法,如下所示:
void UploadFile(string fileName, long offset, byte[] data)
不是发送整个文件,而是发送小数据包,并告诉数据应放在何处。您可以添加更多数据,例如整个文件大小,文件的CRC以了解传输是否成功等等。