【问题标题】:OneDrive REST API Download fileOneDrive REST API 下载文件
【发布时间】:2014-09-21 15:42:35
【问题描述】:

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

.... 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;

因此,当我创建 Stream 对象时,MemoryStream 在 ReadTimeout 和 WriteTimeout 字段上抛出 2 异常,表示此流不支持它们。 不知道怎么解决

【问题讨论】:

  • 不,没有意义。如果没有来自异常的完整堆栈跟踪,您的问题将无法回答。始终捕获异常并使用异常帮助器对话框上的链接“将异常详细信息复制到剪贴板”或在异常上调用 ToString() 并将该文本包含在您的问题中。异常告诉你哪里出了问题,并且经常告诉你解决方案。
  • 谢谢威尔!我错了抛出异常的位置
  • 在下面添加您的答案(用异常实际点的代码稍微填充一下),您可以将其选为正确并关闭它(不会损害您的新帐户——继续阅读Meta Stack Overflow 上的自动帐户问题块)
  • (抱歉,不小心投票关闭--请大家无视)

标签: wcf rest memorystream onedrive


【解决方案1】:

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

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

我删除了这条线,一切都修复了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多