Azure 认知服务 - 为什么我无法访问服务? (401 错误)
Azure Cognitive Services - why don't i have access to service? (401 error)
我正在编写一个 .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>");
});
}
我正在编写一个 .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>");
});
}