我正在尝试运行sample Vision API项目。我基本上将代码Program.cs
复制并粘贴到我的应用程序中并执行它。
这一行(第36-#37行in Program.cs
)
GoogleCredential credential = GoogleCredential.GetApplicationDefaultAsync().Result;
使用System.AggregateException
在mscorlib.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
并授权访问我的云帐户。
关于可能导致此问题的任何想法?
答案 0 :(得分:5)
通过检查详细的构建日志,我发现Google API的软件包具有Newtonsoft.Json
版本9.0.1
的依赖关系(撰写本文时的最新版本)。
无论出于何种原因,Google API 软件包都会在Newtonsoft.Json
版本7.0.0
上具有依赖关系(与其一起安装)。
这些软件包的版本错误了!
安装最新版本(在这种情况下为9.0.1
)解决了这个问题。