我们有一个WCF服务,其阈值为30MB,可以通过http消息发送文件,超过该值的任何内容都会通过文件副本传输,并且路径会被发送回调用者。现在我们被要求删除该文件副本,因为客户抱怨它太慢了。所以决定在通过WCF / HTTP发送二进制内容时删除任何大小限制。
我的问题是 - 这有多可靠?如果可能的话,在单个WCF消息中通过线路推送2GB文件会遇到什么类型的问题?
谢谢!
答案 0 :(得分:3)
如果将WCF中的MaxReceivedMessageSize设置为WCF服务上足够高的值,则可以通过该服务推送相当大的文件。最大值为int64.MaxValue = 9,223,372,036,854,775,807,因此您应该可以设置一个值来覆盖2GB 消息。
您可能希望控制MaxBufferSize以确保您不会尝试将太多内存存储在内存中,并且可以考虑切换到更加二进制效率更高的MTOM消息编码(如果可以)。请注意,MaxReceivedMessageSize在二进制文件编码后控制消息的大小,这意味着可以通过服务发送的原始二进制文件大小将小于2GB。
MSDN有一篇非常好的文章,内容涉及通过WCF发送大量数据以及需要注意的内容:Large Data and Streaming。编辑:结果允许的最大值实际上是Int64.MaxValue)