2011-06-06 83 views
2

我有一个List<string>需要从Web服务检索的文件。异步调用单个文件的检索方法RetrieveFileAsync(string fileName)。由于可能存在文件损坏,因此来自webservice的响应包含该文件的MD5校验和。假设发生损坏,我可以从服务中获取所有文件的最佳方式是什么?我正在考虑维护一个Dictionary<string, bool>,如果校验和匹配并重复检查字典项目,并为所有未标记的文件发出RetrieveFileAsync,那么将标记为Dictionary<string, bool>,直到字典中的所有文件都被标记为止。这是正确的方法吗?WCF Web服务和数据损坏

+0

即使在将WCF服务加载到WCF服务的内存之前,或者在WCF服务器服务和客户端之间发生破坏之前,您是否担心磁盘级别的数据损坏?在第二种情况下,我认为这取决于您使用的频道/绑定... – 2011-06-06 09:58:27

+0

我指的是服务和客户端之间的腐败。 – devnull 2011-06-06 09:59:49

回答

0

如果您希望在服务和客户端之间发生数据损坏,您可以尝试打开Reliable Message Delivery。这应该修复消息级别上的任何损坏:

<wsHttpBinding> 
    <binding configurationName="myReliableBinding"> 
     <reliableSession enabled="true" ordered="true" /> 
    </binding> 
</wsHttpBinding> 

您可以阅读更多here

+0

但是,它不会强制增加安全性并让事情变得更慢吗? – devnull 2011-06-06 15:18:24

+0

如果您使用除basicHttpBinding之外的任何绑定,此方法将帮助您。这种方法没有安全要求。我认为它不会比尝试手动重新请求损坏的文件慢。您的MD5哈希也可能在传输请求期间被破坏:) – 2011-06-06 16:10:09