2014-09-21 145 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; 
} 

我刪除行,一切都固定