- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 .Net Core Web 应用程序,我在其中使用 Azure - Computer Vision .
我正在做一切,如下所示:
我的问题是:
计算机视觉 API 结果:
{ "statusCode": 401, "message": "Access denied due to invalid subscription key. Make sure to provide a valid key for an active subscription." }
我不知道出了什么问题。我有合适的关键点和正确的端点。我还检查了这里的所有内容:
这是我的代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// TODO: Change this to your image's path on your site.
string imagePath = @"images/family.jpg";
// Enable static files such as image files.
app.UseStaticFiles();
string visionApiKey = "";
string visionApiEndPoint = "ComputerVisionAPI_ServiceEndPoint";
HttpClient client = new HttpClient();
// Request headers.
// client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", visionApiKey);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "");
// Request parameters. A third optional parameter is "details".
string requestParameters = "visualFeatures=Categories,Description,Color&language=en";
// Assemble the URI for the REST API Call.
// string uri = visionApiEndPoint + "/analyze" + "?" + requestParameters;
string uri = "https://westus.api.cognitive.microsoft.com/vision/v1.0" + "/analyze" + "?" + requestParameters;
HttpResponseMessage response;
// Request body. Posts an image you've added to your site's images folder.
var fileInfo = env.WebRootFileProvider.GetFileInfo(imagePath);
byte[] byteData = GetImageAsByteArray(fileInfo.PhysicalPath);
string contentString = string.Empty;
using (ByteArrayContent content = new ByteArrayContent(byteData))
{
// This example uses content type "application/octet-stream".
// The other content types you can use are "application/json" and "multipart/form-data".
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
// Execute the REST API call.
response = client.PostAsync(uri, content).Result;
// Get the JSON response.
contentString = response.Content.ReadAsStringAsync().Result;
}
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.Run(async (context) =>
{
await context.Response.WriteAsync("<h1>Cognitive Services Demo</h1>");
await context.Response.WriteAsync($"<p><b>Test Image:</b></p>");
await context.Response.WriteAsync($"<div><img src=\"" + imagePath + "\" /></div>");
await context.Response.WriteAsync($"<p><b>Computer Vision API results:</b></p>");
await context.Response.WriteAsync("<p>");
await context.Response.WriteAsync(JsonPrettyPrint(contentString));
await context.Response.WriteAsync("<p>");
});
}
最佳答案
您必须在 REST API 调用中使用与获取订阅 key 相同的区域。
首先,您必须找到您的订阅位置。为了找到您的订阅区域的位置,您必须转到标签位置下的认知服务 -> 属性,您将找到您的订阅区域。见下文。
第二,您必须找到正确的端点来进行调用。例如,如果我想调用计算机视觉 API,我的位置是美国东部,我将使用 key 1 或 2,然后我将使用以下端点美国东部 - https://eastus。 api.cognitive.microsoft.com/face/v1.0/Detect
您现在可以访问该 API。
关于c# - Azure 认知服务 - 为什么我无权访问服务? (401错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53218121/
我是一名优秀的程序员,十分优秀!