不知道具体是从什么时候开始,但有些通过Graph API从OneDrive下载的文件,会返回95字节的内容。而且都是这样的。
{"error":{"code": "serviceNotAvailable", "message": "Service unavailable", "retryAfterSeconds":30}}。
更准确的说,以下API返回的文件-位置的普通文件下载存在问题。https:/docs.microsoft.comen-usonedrivedeveloperrest-apiapidriveitem_get_content?view=odsp-graph-online。
似乎服务器将错误作为内容返回,而不是通过返回HTTP错误。这与 "数据完整性 "有关,所以我认为你应该总是返回HTTP错误。
原来C# HttpClient在超时的时候,会以AggregateException的方式抛出TaskCanceledException。
所以这不是API本身的问题,而是在处理HttpClient时需要格外注意。
HttpClient需要修改,除了抛出TaskCanceledException之外,还需要抛出HttpRequestException或者其他HTTP相关的异常。