【问题标题】:Google Speech - After Hosting getting Unauthenticated ErrorGoogle Speech - 托管后出现未经身份验证的错误
【发布时间】:2018-01-24 12:04:45
【问题描述】:

我已经使用 Google Speech 库创建了一个将 Speech to text 的 web api 方法。当我使用 Visual Studio 执行时,它工作正常。在 IIS 上托管应用程序后,调用 api 方法时出现以下错误

Method:Status(StatusCode=Unauthenticated, Detail="Getting metadata from plugin failed with error: Exception occurred in metadata credentials plugin.")

代码行出错:

var speechResponse = speech.Recognize(SpeechConfig,
        RecognitionAudio.FromFile(fileToProcess));* 

在另一个系统上,我已经使用服务帐户 json 配置了 GOOGLE_APPLICATION_CREDENTIALS env 变量,但出现以下错误

应用程序默认凭据不可用。如果在 Google Compute Engine 中运行,它们就可用。否则,必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向定义凭据的文件。

【问题讨论】:

  • 在您的第一个系统中,您是否指定GOOGLE_APPLICATION_CREDENTIALS?在第二个系统上,如果你设置了环境变量,你真的,真的不应该得到那个错误。您能否为 Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS") 添加日志记录以检查它是否真的是您所期望的?
  • 此外,我希望在第一个异常中看到一些其他信息,这通常会提供有关凭据插件中出了什么问题的详细信息。不过,单独处理每个系统可能最简单,因为它们的行为不同。
  • 在两个系统上,GOOGLE_APPLICATION_CREDENTIALS 环境变量都指向 Json 文件。能够使用 Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDE‌​NTIALS") 获得价值。
  • 在那种情况下,我不明白你会如何结束这个错误 - 请参阅github.com/google/google-api-dotnet-client/blob/master/Src/…。如果设置了环境变量,则应该不可能归结为引发该异常的代码。当您说您能够获得价值时-您是指在相同的应用程序代码中吗?您可能希望通过调用 GoogleCredential.GetApplicationDefault() 来简化诊断。
  • 我能够通过在服务器上初始化 gcloud 来解决第二个问题“应用程序默认凭据不可用。”

标签: c# google-speech-api


【解决方案1】:
  1. 您是否还为 Visual Studio 安装了紧凑型框架 sdk?如果尝试添加

在您的 *.csproj 文件中。这将迫使 VS 使用 std mscorlib.dll 而不是紧凑的。

  1. 检查系统上的日期和时间是否正确(应为 60 秒的实际时间)

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 2018-05-02
    • 2016-10-25
    • 1970-01-01
    • 2021-12-05
    • 2021-04-11
    • 2019-02-22
    • 1970-01-01
    • 2021-07-14
    相关资源
    最近更新 更多