2016-11-07 34 views
0

我试图继续从谷歌驱动器上载,我有文件的ID,当我关闭连接我让这届互联网重新连接后:没有得到Range头

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"); 
      } 

     } 

我没有得到Range标题,为什么?

回答

1

Content-Range指示原始实体的哪个范围包含在请求的主体中(例如PUT请求)或206部分响应。 Range客户端设置而不是服务器为了请求子范围。我假设你正在与之通话的服务器不会响应上传的块,因此Content-Range(和Range在任何情况下)都不会作为响应头出现。

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

Content-Range: bytes 42-1233/1234 

这意味着:其总大小为1234字节的实体的上传字节42-1233。

或者当完整长度未知:

Content-Range: bytes 42-1233/* 

所以删除了Range头检查,并指定完整上传范围,你应该罚款。

+0

只需要添加我的上传请求 uploadReq.​​AddRange(FileByteArray.Length.ToString(),0,FileByteArray.Length - 1); 它的工作,谢谢 –