Grpc.Core.RpcException StatusCode不可用通道处于状态TRANSIENT_FAILURE

时间:2019-02-07 19:38:03

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

我正在使用Google Vision API来获取图像的相关标签。

 var client = ImageAnnotatorClient.Create();
 var image = Image.FromFile(@"C:\Users\Scorpio\Desktop\th.jpg");
 var response = client.DetectLabels(image); // error
 foreach (var annotation in response)
 {
     if (annotation.Description != null)
           Console.WriteLine(annotation.Description);
 }

enter image description here

您知道如何解决此问题吗?我尝试使用非常常见的图像(例如国家/地区标志),但仍然显示错误。

3 个答案:

答案 0 :(得分:0)

我只是通过使用您的代码来复制此方案,它已成功运行。基于此,此问题可能与错误消息中提到的来自服务端的暂时性和暂时性错误有关;但是,我建议您验证是否添加了正确的库。

下面是我用来执行测试的代码,其中包括身份验证过程:

using Google.Cloud.Vision.V1;
using System;
using Grpc.Auth;
using Google.Apis.Auth.OAuth2;

namespace VisionDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            //Authenticate to the service by using Service Account
            var credential = GoogleCredential.FromFile(@"<CREDENTIALS_JSON_FILE_PATH>").CreateScoped(ImageAnnotatorClient.DefaultScopes);
            var channel = new Grpc.Core.Channel(ImageAnnotatorClient.DefaultEndpoint.ToString(), credential.ToChannelCredentials());
            // Instantiates a client
            var client = ImageAnnotatorClient.Create(channel);
            var image = Image.FromFile(@"<IMAGE_PATH>");
            var response = client.DetectLabels(image); // error
            foreach (var annotation in response)
            {
                if (annotation.Description != null)
                    Console.WriteLine(annotation.Description);
            }

        }
    }
}

如果您仍然遇到此问题,可以看一下Issue Tracker工具,该工具可用于引发Vision API,以便与Google技术支持小组一起验证这种情况并检查是否这种现象可能是由于您的项目出现问题而引起的。

答案 1 :(得分:0)

 Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", @"C:\Users\#YOURUSER#\source\repos\PdfToImage\credentials.json");

答案 2 :(得分:0)

我遇到了同样的问题。 找到根本原因并解决。

该问题归因于Nuget软件包:Grpc.Core.Api 此软件包已更新至版本2.25.0,而由于Google.Api.Gax.Grpc 2.10.0而导致Grpc.Core在1.22.1版被阻止

没有什么可以阻止您将Grpc.Core.Api更新到2.25.0版本,然后遇到一个奇怪的问题-client.Detect ...方法没有返回成功或错误,什么也没有(我没有等待20分钟)。

解决方案 Grpc.Core.Api-将版本号恢复到1.22.1

希望有帮助!