Fabio Carello
Fabio Carello

Reputation: 1102

Cognitive Services Custom Vision SDK NotFound Error

I'm experiencing a strange behavior. Got a Custom Vision service deployed on Azure. It contains a single project with no published models.

Using the HTTP REST Api and querying for projects, it correctly returns a list of (one) projects as shown below:

GET https://westeurope.api.cognitive.microsoft.com/customvision/v3.0/training/projects HTTP/1.1
Host: westeurope.api.cognitive.microsoft.com
Training-Key: {MY_TRAINING_APIKEY}

apim-request-id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
x-content-type-options: nosniff
Date: Thu, 02 May 2019 18:57:25 GMT
Content-Length: 605
Content-Type: application/json; charset=utf-8

[{
  PROJECT_DATA
}]

But, if I try to use the service via C# SDK using:

Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction
Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training

both 1.0 version, every time I got:

Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.Models.CustomVisionErrorException: 'Operation returned an invalid status code 'NotFound''

This is the code snippet using the SDK.

using (CustomVisionTrainingClient client = new CustomVisionTrainingClient())
            {
                client.ApiKey = "{MY_TRAINING_APIKEY}";
                client.Endpoint = "https://westeurope.api.cognitive.microsoft.com/customvision/v3.0/Training/";

                var projects = client.GetProjects();
            }

Interesting fact: trying to use both Training and Prediction clients on currently working Custom Vision project (with deployed models too) I keep getting NotFound error on every SDK method.

Am I missing something? Thanks in advance. Fabio.

Upvotes: 0

Views: 551

Answers (1)

cthrash
cthrash

Reputation: 2973

For CognitiveServices Vision clients, you need to provide the base URI as the Endpoint property, not the entire API endpoint. The client SDK itself will add the remainder of the path (including the version) depending on the method you call.

So in your case you need to do the following:

using (CustomVisionTrainingClient client = new CustomVisionTrainingClient())
{
    client.ApiKey = "{MY_TRAINING_APIKEY}";
    client.Endpoint = "https://westeurope.api.cognitive.microsoft.com";

    var projects = client.GetProjects();
}

Upvotes: 1

Related Questions