c# - 反序列化 JSON 凭证数据时出错。谷歌云文件上传 C# Asp.Net
问题描述
我正在尝试建立与谷歌云的连接以进行媒体上传
我使用了各种方法,例如设置环境变量,将 json 保存到 mongodb ,尝试直接从文件加载 json 然后加载到谷歌函数
图书馆:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using DAL;
using MongoDB;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Configuration;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Auth.OAuth2.Flows;
using System.Drawing;
using Newtonsoft.Json;
using MongoDB;
using MongoDB.Driver.Builders;
using MongoDB.Bson;
方法一:使用环境变量。
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS","onfer-gc.json");
var Credential1 = GoogleCredential.GetApplicationDefaultAsync();
Error : Using Environment Variable.
Error reading credential file from location onfer-gc.json: Error deserializing JSON credential data.
请检查环境变量 GOOGLE_APPLICATION_CREDENTIALS 的值
方法2:从文件加载json
FileStream stream1 = File.OpenRead("onfer-gc.json");
var Credential = GoogleCredential.FromStream(stream1);
Error deserializing JSON credential data.
方法三:从MongoDB数据库加载数据,然后尝试转成字符串
var Db = new Database();
var result = Db.GetCollection<company>().FindOne(Query.EQ("type", "service_account"));
var Credential = GoogleCredential.FromJson(result);
在这种情况下,它会给出错误
Element 'type' does not match any field or property of class MongoDB.company.
即使我已经在线检查了解决方案
https://github.com/google/google-api-dotnet-client/issues/747
但它没有用。我在这里做错了什么?
解决方案
我的案例可能无法直接回答问题,但可能是导致此类错误的原因。在我的项目中,我引用了两个不同版本的 Newtonsoft.json,一个是 12.0.2,另一个是 7.0.1。一旦我将 7.0.1 更新到相同的 12.0.2,json 反序列化错误就解决了。这可以解释一些随机的工作/不工作情况。
推荐阅读
- assembly - “ld -Ttext 0x10000 --oformat=binary loader.o -o loader.bin”不起作用
- git - 我可以撤消 git reflog 吗?
- laravel - 登录输入名称与表字段名称不同的用户
- javascript - 如何防止此元素隐藏然后再次出现?
- windows-10 - 有没有办法使用 NSIS 在 Win10 中安装一个可以读取 C:\Windows 的应用程序?
- continuous-integration - Team City Jobs 仅从 Git 更新某个文件夹?
- php - 如果提供的 PDO 参数比需要的多,如何检查 PHP
- r - R - 在所有集群中导出一个函数(不是一个对象)
- azure - 用于检查条件的 Terraform 脚本
- python - 错误:超出配额(配额组“DNSResolutionsNonbillable”超出配额并限制“每天的 DNS 解析”