Google数据存储区身份验证问题 - C#

问题描述 投票:3回答:2

我正在尝试使用服务帐户凭据文件(我根据文档创建)在我的帐户上连接到Google数据存储区,但我在尝试插入实体时遇到身份验证错误:

Grpc.Core.RpcException:Status(StatusCode = Unauthenticated,Detail =“元数据凭据插件中出现异常。”)

我的代码是:

var db = DatastoreDb.Create("myprojectid");
Entity entity = new Entity{
 Key = db.CreateKeyFactory("mykindname").CreateIncompleteKey()
};
var keys = await db.InsertAsync(new[] { entity });

GOOGLE_APPLICATION_CREDENTIALS变量是指凭据文件,在调用GoogleCredential.GetApplicationDefaultAsync()以查看凭据对象是否有效时,它确实看起来不错......

我看到一些早期的例子使用GetApplicationDefaultAsync函数来处理一些DatastoreService对象 - 但我在最新的.Net API中找不到DatastoreService对象(可能是旧版本中的那个...):Google.Cloud.Datastore。 V1

请注意,我不希望使用其他身份验证方法:

1)使用gcloud cli。

2)从谷歌环境(例如应用程序引擎)运行。

不知道怎么解决这个问题?

c# google-cloud-platform google-cloud-datastore google-authentication
2个回答
3
投票

在Jon Skeet的大力帮助下,这个问题得到了解决。

如果您未引用所有必需的数据存储区dll,则可能会出现身份验证问题。确保在运行数据存储区调用的项目中引用了所有dll。

我已经通过NuGet将Google Datastore lib添加到我的测试项目中,一切正常!

请注意,在这种情况下,建议启用gRPC日志记录。 `(例如:GrpcEnvironment.SetLogger(新的ConsoleLogger()),你可能会看到加载几个dll是否有问题......


1
投票

如果系统时钟严重不正确,则可以破坏身份验证。检查系统时间,并在必要时进行修复,然后再次尝试对数据存储区进行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.