Google Speech – после того, как хостинг получил ошибку, не прошедшую проверку подлинности

Я создал метод веб-API для преобразования речи в текст с использованием библиотеки Google Speech. Он отлично работает, когда я использую визуальную студию. После размещения приложения в IIS я получаю сообщение об ошибке ниже при вызове метода API

Метод: Статус(StatusCode=Unauthenticated, Detail="Не удалось получить метаданные из плагина с ошибкой: Исключение произошло в плагине учетных данных метаданных.")

Ошибка в строке с кодом:

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

И в другой системе я настроил переменную env GOOGLE_APPLICATION_CREDENTIALS с учетной записью службы json, но я получаю сообщение об ошибке ниже

Учетные данные приложения по умолчанию недоступны. Они доступны при работе в Google Compute Engine. В противном случае необходимо определить переменную среды GOOGLE_APPLICATION_CREDENTIALS, указывающую на файл, определяющий учетные данные.


person Harish Kumar    schedule 24.01.2018    source источник
comment
В вашей первой системе вы указываете GOOGLE_APPLICATION_CREDENTIALS или нет? Во второй системе вы действительно не должны получать эту ошибку, если у вас установлена ​​​​переменная среды. Можете ли вы добавить ведение журнала для Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS"), чтобы убедиться, что это действительно то, что вы ожидаете?   -  person Jon Skeet    schedule 24.01.2018
comment
Кроме того, я ожидаю увидеть некоторую другую информацию в первом исключении, которая обычно содержит подробную информацию о том, что пошло не так в подключаемом модуле учетных данных. Вероятно, проще всего обращаться к каждой системе отдельно, поскольку они ведут себя по-разному.   -  person Jon Skeet    schedule 24.01.2018
comment
В обеих системах переменная env GOOGLE_APPLICATION_CREDENTIALS указывает на файл Json. Возможность получить значение с помощью Environment.GetEnvironmentVariable(GOOGLE_APPLICATION_CREDE‌​NTIALS).   -  person Harish Kumar    schedule 25.01.2018
comment
В этом случае я не понимаю, как вы могли столкнуться с этой ошибкой — см. github.com/google/google-api-dotnet-client/blob/master/Src/. Если переменная окружения установлена, не должно быть возможности перейти к коду, выдающему это исключение. Когда вы говорите, что можете получить значение, вы имеете в виду тот же код приложения? Возможно, вы захотите упростить диагностику, вызвав GoogleCredential.GetApplicationDefault().   -  person Jon Skeet    schedule 25.01.2018
comment
Мне удалось решить вторую проблему. Учетные данные приложения по умолчанию недоступны. путем инициализации gcloud на сервере   -  person Harish Kumar    schedule 31.01.2018
comment
Я удивлен, что это было необходимо - если переменная среды установлена ​​и доступна, все должно быть в порядке. Но все же было бы хорошо сделать этот вопрос об одном конкретном случае и, возможно, задать второй вопрос, если это необходимо. Гораздо проще помочь с чем-то одним.   -  person Jon Skeet    schedule 31.01.2018


Ответы (1)


  1. У вас также установлен компактный фреймворк SDK для Visual Studio? если попробовать добавить

    ‹ NoStdLib › Ложь‹ / NoStdLib ›

в вашем файле *.csproj. Это заставит VS использовать стандартную mscorlib.dll вместо компактной.

  1. Проверьте правильность даты и времени в вашей системе (должно быть с 60 секундами фактического времени)
person Aakash Pinnamaneni    schedule 12.03.2018