我的 WCF 服务契约具有如下方法:
[OperationContract]
string GetFile(int id);
[OperationContract]
void UploadFile(int id, string text);
GetFile 返回文件的文本,UploadFile 将某些文件的内容发送到服务器。
当文件大小约为几 MB(在我的例子中为 4.37 MB)时,会出现奇怪的行为:GetFile 工作正常,客户端获取长文本没有任何问题,但 UploadFile 无法发送相同文件到服务器。客户端在执行此方法时卡住,并且似乎不会完成操作。我等了几分钟,但没有结果,我强行停止了客户端。
那么,我的问题是这种转移的方向有什么区别吗?我了解 WCF 流,它应该用于将大文件发送到服务器,我将使用它来更改我的代码。我想知道为什么只有当文件传输到服务器而服务器正确返回相同大小的数据时才会出现问题?
更新。 UploadFile 不应该是 OneWay 操作,因为我需要知道它是否成功。 执行不会丰富服务器。我在服务器端设置了断点,但它没有触发。
最佳答案
我猜您已经在服务器和客户端上配置了 maxReceivedMessageSize 和读者配额。否则你不应该能够发送这么大的消息。您是否在 IIS 中托管 WCF 服务? Http 运行时有其自己的限制,即 4MB。它可以在configuration/system.web/httpRuntime/@maxRequestLength中更改(值以KB为单位)。我想知道为什么你没有收到任何异常。
关于WCF 大文件从服务器传输,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3520180/