Сообщение о несанкционированном исключении при попытке связаться с когнитивной службой в Azure - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь сделать простой проект анализа изображений, используя AI-инструменты для Visual Studio. Я создал Azure Cognitive Service в качестве службы ComputerVision. С момента его создания прошло более 10 минут, поэтому ключи API должны быть действительными. Затем я создал новый проект, щелкнув по нему правой кнопкой мыши. Но когда я запускаю его, я получаю это исключение:

    Please input image url or locate a local image file. If input is empty, example image will be used.

No url or file specified, use the example https://oxfordportal.blob.core.windows.net/vision/Analysis/1-1.jpg
One or more errors occurred.
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at System.Threading.Tasks.Task`1.get_Result()
   at GetImageDetailsService.Program.Main(String[] args) in C:\Users\X\Documents\Visual Studio 2017\Projects\CognitiveServiceTest\GetImageDetailsService\Program.cs:line 27
Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models.ComputerVisionErrorException: Operation returned an invalid status code 'Unauthorized'
   at Microsoft.Azure.CognitiveServices.Vision.ComputerVision.ComputerVisionAPI.<DescribeImageWithHttpMessagesAsync>d__30.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.CognitiveServices.Vision.ComputerVision.ComputerVisionAPIExtensions.<DescribeImageAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.CognitiveServices.Samples.ComputerVisionApiExtensions.<DescribeImage>d__2.MoveNext() in C:\Users\X\Documents\Visual Studio 2017\Projects\CognitiveServiceTest\GetImageDetailsService\ComputerVisionApiExtensions.cs:line 34

Видимо, я не авторизован. Что может быть причиной этого? Я вошел в свою подписку Azure и у меня есть средства (я использую уровень F0). Я также проверил, что регион правильный и что ключ API совпадает.

Редактировать: Когда я изменяю ключ API на что-то другое в вызове приложения, я все равно получаю несанкционированное исключение.

Edit2: добавлен код, который вызывает API.

var client = new ComputerVisionApiExtensions(ComputerVisionSubscriptionKey, ComputerVisionRegion, null);
var result = client.DescribeImage(imagePath).Result;

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Я получаю то же самое и думал, что стоило бы отправить вопрос .Я получил ответ на исправление, протестировал его, и все заработало!

Чтобы решить эту проблему, просто поместите this.AzureRegion = GetRegion(region); внутри конструктора в файле ComputerVisionApiExtensions.cs.

0 голосов
/ 21 мая 2018

Для типа Computer Vision API Azure Cognitive Services запрос на анализ изображения будет выглядеть следующим образом:

POST https://{location-of-your-Computer-Vision-API}.api.cognitive.microsoft.com/vision/v1.0/analyze?visualFeatures=Categories&language=en
Host: {location-of-your-Computer-Vision-API}.api.cognitive.microsoft.com
Content-Type: application/json
Ocp-Apim-Subscription-Key: {subscription-key-under-the-same-region-of-your-Computer-Vision-API}

{"url":"https://oxfordportal.blob.core.windows.net/vision/Analysis/1-1.jpg"}

Примечание: В вызове REST вы должны использовать тот же регион, что и для получить ключи подписки. Например, если вы получили ключи подписки от westus, заменить "westcentralus" в URL ниже с "westus".

Если ваши когнитивные службы Azure находятся в Восточной Азии, а вы используете ключ подписки для запроса westcentralus.api.cognitive.microsoft.com вместо eastasia.api.cognitive.microsoft.com, вы можете получить 401 Отказ в доступе и следующий ответ:

{
  "statusCode": 401,
  "message": "Access denied due to invalid subscription key. Make sure to provide a valid key for an active subscription."
}

Вы можете использовать fiddler для захвата сетевых следов при запуске приложения, чтобы сузить эту проблему. Кроме того, вы можете следовать подробным учебным пособиям в разделе «УПРАВЛЕНИЕ РЕСУРСАМИ> Быстрый старт» ваших Cognitive Services через портал Azure.

...