调用GetApplicationDefaultAsync()时出现AggregateException

时间:2016-08-03 04:03:33

标签: c# google-cloud-platform google-cloud-vision

我正在尝试运行sample Vision API项目。我基本上将代码Program.cs复制并粘贴到我的应用程序中并执行它。

这一行(第36-#37行in Program.cs

GoogleCredential credential = GoogleCredential.GetApplicationDefaultAsync().Result;

使用System.AggregateExceptionmscorlib.dll中抛出Additional information: One or more errors occurred.

通过检查InnerException,我发现投掷的实际异常是InvalidOperationException Error deserializing JSON credential data.

尽管如此,我的云项目是一个基本项目,具有服务帐户和启用了Cloud Vision API,没有别的。我通过编写:

检查我的环境变量是否设置为JSON文件
Console.WriteLine(Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"));

在上面的行之前。它的输出(就在崩溃之前)是(类似的):

  

C:\Users\me\Documents\Projects\MyProject\MyProject-ba31aae6efa1.json

我检查了文件,这是我启用服务帐户时获得的文件。其中的每个属性看起来都很好(即项目名称正确,路径正确,......)。

我安装了Google Cloud SDK并执行了gcloud beta auth application-default login并授权访问我的云帐户。

关于可能导致此问题的任何想法?

1 个答案:

答案 0 :(得分:5)

通过检查详细的构建日志,我发现Google API的软件包具有Newtonsoft.Json版本9.0.1的依赖关系(撰写本文时的最新版本)。

无论出于何种原因,Google API 软件包都会在Newtonsoft.Json版本7.0.0上具有依赖关系(与其一起安装)。

这些软件包的版本错误了!

安装最新版本(在这种情况下为9.0.1)解决了这个问题。