ArgumentNullException:“基本URI”为空,将文件上载到谷歌驱动器时
我将文件上传到谷歌驱动器发现这里的教程如下:ArgumentNullException:“基本URI”为空,将文件上载到谷歌驱动器时
https://developers.google.com/drive/web/quickstart/quickstart-cs
我已经创建了一个编号和密钥我主要帐户,并使用该信息,我可以上传到我的两个帐户(从%AppData%/ Google ...删除验证令牌)。
然而,客户给我们他的谷歌帐户,所以我们可以尝试一切都会为他工作,它不适合他的帐户。我们可以通过Web界面上传和下载文件,而不会有任何问题,但它不适用于我的应用程序。
我注意到的一个区别是我的客户的帐户没有谷歌电子邮件地址;它是[email protected],所以我用我的工作电子邮件地址创建了一个新的Google帐户,并对其进行了测试,并且在登录到Google云端硬盘后完美无误地工作。
问题就出现在最后几行:
FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain");
request.Upload();
File file = request.ResponseBody;
Console.WriteLine("File id: " + file.Id);
在这一点上,request.ResponseBody是空,因此,如果我只是运行的代码,file.Id抛出一个ArgumentNullException。如果我跳入调试模式并检查环境,request.Progress(来自基类的私有属性)将其Status字段设置为“Failed”,并且Exception字段为ArgumentNullException,并且消息“参数不能为null参数名称:baseUri。“。
关于什么可能是错误的任何想法?
更新: 的代码来创建服务对象:
// Create the service.
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Drive API Sample",
});
你有一个OAuth令牌没有正确的范围!
设置您范围设置为:
static string[] Scopes = { DriveService.Scope.Drive, DriveService.Scope.DriveFile };
在我的第一次尝试,我只用Drive
,而不是DriveFile
我无法测试这个,但在接近两年内成为第一个有希望的答案,我将接受它。谢谢! – raven 2016-03-03 19:31:36
我正在使用一个例子,他们将信誉存储在一个文件中。您必须删除此文件并扩展范围。 [gist source](https://gist.github.com/DannySotzny/0ce64cebf39e9e420187) – 2016-03-18 14:30:24
我得到了同样的问题,终于让我找到了API未启用。 我在我的情况下回复原因,并希望它可以帮助你。
在我的情况下,我没有正确配置API设置。
当API配置不正确时引发ArgumentNullException的原因是报告问题。 https://code.google.com/p/google-api-dotnet-client/issues/detail?id=421
在第一请求ResumableUpload.InitializeUpload遇到错误,但该错误消息包括“API未正确配置”不报告。
我解决了以下步骤完全相同的错误:
- 转到https://console.developers.google.com/(也有你的项目页面)
- - > API和验证 - >的API
- 点击“驱动器API”
- 激活它
那么它应该是标签下的‘启用API’,这是错误去东北。
感谢您的分享。不幸的是,我已经启动了API ... – raven 2015-07-28 12:44:48
你可以发布你如何建立你的'service'对象? – 2014-09-25 16:43:50
@TejasSharma当然,但它只是从教程中粘贴而没有更改。 – raven 2014-09-25 16:48:01
你解决了这个问题吗? – 2014-12-03 09:18:36