c# - Microsoft 计算机视觉 API 返回 404 未找到资源
问题描述
我尝试使用下面的 C# 代码调用 Azure 的计算机视觉 API,但得到以下响应:
{"code":"404","message":"Resource not found"}
有什么建议可以完成这项工作吗?
using System;
using System.IO;
using System.Threading.Tasks;
using AzureFunctions.Extensions.CognitiveServices.Bindings.Vision.Analysis;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage.Table;
namespace myCognitiveFunction
{
public static class myCognitiveFunction
{
[FunctionName("myCognitiveFunction")]
public static async Task RunAsync(
[BlobTrigger("images/{name}", Connection = "storageAccount")]Stream myBlob,
[VisionAnalysis(VisionKey = "Key", VisionUrl = "Url")]VisionAnalysisClient visionClient,
[Table("VisionAnalysis", Connection = "storageAccount")]IAsyncCollector<VisionResult> results,
string name, ILogger log)
{
var request = new VisionAnalysisRequest(myBlob);
var result = await visionClient.AnalyzeAsync(request);
var visionResult = new VisionResult(Guid.NewGuid().ToString(), "VisionAnalysis") { ResultJson = result.ToString() };
await results.AddAsync(visionResult);
log.LogInformation($"Results: {result.ToString()}");
}
}
public class VisionResult : TableEntity
{
public VisionResult(string id, string partitionKey)
{
this.RowKey = id;
this.PartitionKey = partitionKey;
}
public string ResultJson { get; set; }
}
}
解决方案
首先,欢迎来到 SO!您似乎已经从文档中复制了代码,而没有替换服务工作所需的占位符storageAccount
, Key
, Url
...。例如,在您的情况下,在您的问题下发布的 URL 应按VisionUrl
如下方式进入属性:
[VisionAnalysis(VisionKey = "YOUR_KEY", VisionUrl = "mycognitive1000.cognitiveservices.azure.com")]
存储帐户是Azure Blob 存储连接字符串。至于 Vision Key 和 Url,你可以在官方文档中找到关于计算机视觉 API的很好的教程和文档。本教程还解释了如何将这些参数写入单独的配置文件中作为最佳实践。
推荐阅读
- python - python如何通过右键单击Windows访问文件
- mysql - MySQL 多个 JOINS 在同一个单元格上
- css - 为什么使用 Bootstrap 4 在顶行和导航栏之间有一个空格?
- javascript - 如何将 React Hooks 与 video.js 一起使用?
- objective-c - Clang 将 #import 语句误解为文件,而不是框架
- python - 如何在文本字段中创建有效的 HTML 标签
- javafx - JavaFX中时间轴的场景更改问题
- javascript - 为什么我的 JavaScript 代码算术方程出现 NaN 错误
- javascript - 父子组件之间的 2 路事件绑定不起作用
- c++ - 在头文件和 cpp 文件中都包含一个库