未获取范围 header

Not getting Range header

我正在尝试从 google 驱动器恢复上传,当我关闭连接时我有文件的 ID 我在再次连接互联网后 session 创建了这个文件:

var request = (HttpWebRequest)WebRequest.Create(fileUri);
            request.Method = "PUT";
            request.ContentLength = 0;
            request.Headers.Add("Content-Range", "bytes */" + FileByteArray.Length);
            try
            {
                var response = request.GetResponse();
            }
            catch (WebException e)
            {
               fileRange = e.Response.Headers.Get("Range");
            }

        }

我没有得到范围 header,这是为什么?

Content-Range 指示原始实体的哪个范围包含在请求(如您的 PUT 请求)或 206 部分响应的 body 中。 Range 客户端 而不是服务器设置,以便请求 sub-range。我假设您正在与之交谈的服务器不会响应上传的块,因此 Content-Range(在任何情况下 Range 都不会作为响应出现 header。

在您的代码片段中,缺少 Content-Range 的实际上传范围(参见 updated HTTP RFC)。它必须具有以下形式:

Content-Range: bytes 42-1233/1234

表示:上传总大小为1234字节的实体的第42-1233字节。

或者当完整长度未知时:

 Content-Range: bytes 42-1233/*

所以删除 Range header 的检查并指定完整的上传范围,你应该没问题。