【问题标题】:ArgumentNullException: "baseUri" is null, when uploading a file to Google DriveArgumentNullException:将文件上传到 Google 云端硬盘时,“baseUri”为空
【发布时间】:2016-02-29 22:58:33
【问题描述】:

我正在按照此处的教程将文件上传到 Google Drive:

https://developers.google.com/drive/web/quickstart/quickstart-cs

我已经为我的主账户创建了一个 ID 和 Secret,并且使用该信息,我可以上传到我的两个账户中的任何一个(从 %AppData%/Google... 中删除身份验证令牌)。

但是,一位客户向我们提供了他的 google 帐户,因此我们可以尝试一切都对他有效,但对他的帐户无效。我们可以通过网络界面上传和下载文件没有任何问题,但它不适用于我的应用程序。

我注意到的一个区别是我客户的帐户没有谷歌电子邮件地址;它是 name@myclient.com,所以我用我的工作电子邮件地址创建了一个新的 google 帐户,并对其进行了测试,它在登录 Google Drive 后完美运行。

问题出现在最后几行:

FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain");
request.Upload();

File file = request.ResponseBody;
Console.WriteLine("File id: " + file.Id);

此时,request.ResponseBody 为 null,因此,如果我只运行代码,file.Id 将引发 ArgumentNullException。如果我进入调试模式并改为检查环境,request.Progress(来自基类的私有属性)将其状态字段设置为“失败”,并且异常字段是 ArgumentNullException,并显示消息“参数不能为空. 参数名称:baseUri."。

知道什么地方出了问题吗?

更新: 创建服务对象的代码:

// Create the service.
var service = new DriveService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "Drive API Sample",
});  

【问题讨论】:

  • 您能发布您如何创建service 对象吗?
  • @TejasSharma 当然可以,但它只是从教程中粘贴而没有更改。
  • 你解决了这个问题吗?
  • @LucaTrazzi 不,我找不到解决方案。
  • @JaimePardos 我遇到了同样的错误,你找到解决这个问题的方法了吗?

标签: .net google-drive-api


【解决方案1】:

您有一个没有正确范围的 OAuth 令牌!

将您的范围设置为:

static string[] Scopes = { DriveService.Scope.Drive, DriveService.Scope.DriveFile };

在我的第一次尝试中,我只使用了Drive 而不是DriveFile

【讨论】:

  • 我无法对此进行测试,但作为近两年来第一个有希望的答案,我将接受它。谢谢!
  • 我正在使用他们将凭据存储在文件中的示例。您必须删除此文件并扩展范围。 gist source
【解决方案2】:

我遇到了同样的问题,最后我发现 API 没有启用。 我就我的情况回复了原因,希望对您有所帮助。

在我的情况下,我没有正确配置 API 设置。

API 配置不正确时抛出 ArgumentNullException 的原因是报告问题。 https://code.google.com/p/google-api-dotnet-client/issues/detail?id=421

ResumableUpload.InitializeUpload中的第一个请求报错,但是没有报“API未正确配置”的错误信息。

【讨论】:

    【解决方案3】:

    我通过以下步骤解决了完全相同的错误:

    1. 转到https://console.developers.google.com/(然后转到您的项目页面)
    2. -> API 和身份验证 -> API
    3. 点击“Drive API”
    4. 激活它

    然后它应该在“激活的 API”选项卡下,并且此错误消失了。

    【讨论】:

      猜你喜欢
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多