CustomVision API返回“操作返回了无效的状态码:'错误的请求'”

时间:2019-08-03 16:21:30

标签: c# azure-cognitive-services microsoft-custom-vision

像这样使用CustomVisionPredictionClient时出现此错误:

var predictionApi = new CustomVisionPredictionClient()
{
    ApiKey = _predictionKey,
    Endpoint = "https://westeurope.api.cognitive.microsoft.com"
};
var result = await predictionApi.ClassifyImageAsync(project.Id, _modelName, imageData);
  • 通过培训API检索项目/项目ID,我可以在该API上毫无问题地调用GetProjects()。应该是正确的,如果我将其更改为错误的内容,则会收到“未找到”异常。
  • _modelName是迭代的已发布名称(“ xxxRecognition”,请参见下面的屏幕截图),它也应该是正确的,当我对其进行更改时,会得到“未找到”。
  • imageData只是来自PNG图像的FileStream。

enter image description here

2 个答案:

答案 0 :(得分:0)

这里有两个要解决的问题。

您的特定“错误请求”

具体来说,您的示例中有一个或多个您没有真正包含的问题。

  1. _modelName格式错误
  2. imageData的格式不正确
  3. 某些配置(可能是请求标头)丢失或不正确

这是我们从您提供的示例中可以提供的最大信息。但是,这是 other 的关注点,将来会给您带来极大的好处:“错误请求”告诉您很多有关发生的事情。

一般有关“错误请求”的更多信息

如果您查看HTTP status codes内的范围,则会注意到“错误”范围内的模式。

  1. 4xx中,请求者(您)做错了什么,您可以纠正它。
  2. 5xx中,响应者做错了什么,而您 无法纠正它。

在此之下:

  1. 404 Not Found中,请求的格式似乎不错,但响应者找不到您要的内容
  2. 401 Unauthorized中,您没有提供任何身份信息
  3. 403 Forbidden中,您 did 提供了一个身份,但不允许您执行此操作

但是在400 Bad Request中,响应者根本无法将您的请求验证为良好的输入 。这意味着您可以再次查看API文档,将其与您的实现进行比较,然后重试。

答案 1 :(得分:0)

问题是我创建了一个“对象检测”类型的项目,并尝试将其与必须与“分类”类型的项目一起使用的ClassifyImage()一起使用。因此,我必须改用DetectImage()。 :)