无法在Windows 8商店应用程序中为HttpWebRequest设置范围标头

时间:2013-09-13 11:57:07

标签: c# windows-8

我无法在Windows 8商店应用程序中为HttpWebRequest设置范围标头,如果我尝试以不同方式设置范围,如下面的示例代码我遇到以下异常, 必须使用适当的属性或方法修改“Range”标题。参数名称:name。

我可以选择使用以下条件设置范围标题。 1.通过设置AllowReadStreamBuffering = false来修复响应回调;这样我就可以不断地将它写入文件并获得下载进度。

代码是:

WebHeaderCollection headers = new WebHeaderCollection();
headers[HttpRequestHeader.Range] = "bytes=" + CurrentBufferPointer + "-"; 

HttpWebRequest DownLoadClient = (HttpWebRequest)WebRequest.Create(this.FileUri);
DownLoadClient.Method = "GET";
DownLoadClient.AllowReadStreamBuffering = false;

//设置以下两种方式之一会引发异常

DownLoadClient.Headers = headers;   
Or 
DownLoadClient.Headers[HttpRequestHeader.Range] = "bytes=" + CurrentBufferPointer +  "-";

DownLoadClient.BeginGetResponse(new AsyncCallback(GetResponseCallback), DownLoadClient);

当我设置DownLoadClient.Headers = headers时;这个例外将会出现:

1 个答案:

答案 0 :(得分:0)

试试这个

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, this.FileUri);
request.Headers.Range = new RangeHeaderValue(0, 1024); //if range is of "bytes=0-1024";
var response = await client.SendAsync(request);