C# 如果某个文件的内容长度大于本地副本,或者该文件已被修改,如何指定应提取该文件?

C# 如果某个文件的内容长度大于本地副本,或者该文件已被修改,如何指定应提取该文件?,c#,http,http-headers,httpwebrequest,httpwebresponse,C#,Http,Http Headers,Httpwebrequest,Httpwebresponse,我知道如何发出一个请求,上面写着“仅当文件自某个特定日期以来已被修改时才获取该文件” 但是,假设出现这种情况- 本地文件自上次写入后未被修改,但上次从服务器下载时,文件不完整。换句话说,本地文件中的内容长度与服务器上文件中的内容长度不同 因此,我想指定,如果服务器上的内容长度与本地计算机上的内容长度不同,那么应该从服务器获取文件 我该怎么做 对于您的场景,仅使用HTTP,我将检查文件长度头: string length = response.Headers[HttpRespons

我知道如何发出一个请求,上面写着“仅当文件自某个特定日期以来已被修改时才获取该文件”

但是,假设出现这种情况-

本地文件自上次写入后未被修改,但上次从服务器下载时,文件不完整。换句话说,本地文件中的内容长度与服务器上文件中的内容长度不同

因此,我想指定,如果服务器上的内容长度与本地计算机上的内容长度不同,那么应该从服务器获取文件


我该怎么做

对于您的场景,仅使用HTTP,我将检查文件长度头:

        string length = response.Headers[HttpResponseHeader.ContentLength];
因此,您将从一开始就知道该文件的长度。如果它太短,那么它是不完整的,您需要再次下载

如果您更关心文件的内容,还可以检查MD5:

        string md5 = response.Headers[HttpResponseHeader.ContentMd5];
如果您坚持请求条件,您可以尝试HTTP头如果范围。W3C将其描述为:

。。。 非正式地说,它的意思是“如果实体没有改变,请将我缺少的部分发送给我;否则,请将整个新实体发送给我”。


检查并查看您的选项。

您想要任何方法来实现这一点,或者您只需要使用HttpWebRequesty来实现这一点?HttpWebRequest会更好。但是如果没有,我知道如何用最艰难的方式去做!
        string md5 = response.Headers[HttpResponseHeader.ContentMd5];