2014-09-21 148 views
0

我在我的WCF Web服务中使用了OneDrive的REST API。一切运作良好,但下载一个文件。我需要获取下载的文件的Stream对象,但MemoryStream类给我一个有关ReadTimeout和WriteTimeout的异常。 这是代码:OneDrive REST API下载文件

.... some code .... 
var rClient = new RestClient("https://apis.live.net/v5.0/"); 
var rRequest = new RestRequest(rootFile.id + "/content", Method.GET); 
rRequest.AddParameter("access_token", data.accessToken); 
var rResponse = rClient.Execute(rRequest); // THE RESPONSE IS OK 
byte[] array = rResponse.RawBytes; 
Stream stream = new MemoryStream(array); // PROBLEM HERE! 
return stream; 

所以,当我创建流对象上的字段ReadTimeout和WriteTimeout说他们不支持此流的MemoryStream的罚球2异常。 我不知道如何解决它

+0

不,是没有意义的。如果没有完整的堆栈跟踪,你的问题是无法回答的。总是捕获异常,并在异常帮助对话框中使用链接“将异常详细信息复制到剪贴板”或在异常***上调用ToString(),并将该文本包含在您的问题***中。例外情况告诉你哪些事情发生错误,并经常告诉你解决方案。 – Will 2014-09-21 15:46:36

+0

谢谢你会!我错了引发异常的位置 – Cardella 2014-09-21 16:27:22

+0

在下面添加您的答案(用例外的实际点的代码填充一点),您可以选择它作为正确答案并将其关闭(不损害您的新帐户 - 阅读([meta]) – Will 2014-09-22 12:28:18

回答

0

正如Will在评论中所建议的那样,我发现ReadTimeout和WriteTimeout上的异常并不是真正的问题。在上面的代码之后,调用方法中的空对象抛出异常。 下面是引发Exception的点:Current对象为null。

stream = client.DownloadFile(token); 
if (stream != null) 
{ 
    **WebOperationContext.Current.OutgoingResponse.ContentType = "text/octet-stream";** //HERE 
    return stream; 
} 

我删除行,一切都固定