API 管理层 URL 正在提供缺少订阅密钥的问题
API management URL is giving Missing subscription key Issue
我是 API 管理层的新手。我创建了一个基本 WEB API 并托管到 API 应用程序(应用程序服务)。 URL 正在按预期工作并且正在返回数据。即 http://xyz.azurewebsites.net/api/webapi
但是当我在 API 管理中添加 API 应用程序时,我得到了不同的 URL 我添加了额外的后缀,但是当我试图打开时浏览器 Link--> https://abc.azure-api.net/God
出现以下错误
{ "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
如果 API APP 没有问题,那么 API 管理就不应该有问题。如果我遗漏了什么,请指导我。
NB--> 我已经尝试在 fiddler 中添加订阅密钥,但即将出现不同的问题。但是要访问 URL 它基本上不需要订阅密钥。
如果您为产品设置启用需要订阅的选项,那么您必须通过以下header Ocp-Apim-Subscription-Key
。
即使您提供订阅密钥,该密钥也应该属于 API 包含的产品。
如果您不需要订阅选项,请在产品设置中将其禁用。
如果您为产品设置启用需要订阅的选项,那么您必须通过以下 header Ocp-Apim-Subscription-Key。即使您提供订阅密钥,该密钥也应该属于 API 包含的产品。在您的产品中添加您的 API。
- Select 来自 Azure 门户的产品 menu/link。
- Select 列表中的产品。
- Select select 产品选项中的 API。
- 单击“添加”按钮并从列表中单击 select 您的 API,然后单击 Select。
您可以通过 Postman 或您的代码使用 API。
您必须在 header 密钥 (Ocp-Apim-Subscription-Key) 中传递订阅密钥。
您可以在 api 个人资料屏幕上的开发人员门户中找到订阅密钥 (Primary/Secondary)。
您必须在请求中传递您的订阅密钥 headers。
将此添加到您的 C# 代码中
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("Authorization", BearerToken);
request.Headers.Add("Ocp-Apim-Subscription-Key", config["OcpApimSubscriptionKey"]);
将此添加到您的应用设置文件
"OcpApimSubscriptionKey": "your key",
示例代码:
try
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization", BearerToken);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", config["OcpApimSubscriptionKey"]);
HttpResponseMessage response = client.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
return response.Content.ReadAsStringAsync().Result;
}
else
{
var ResponseResult = await response.Content.ReadAsStringAsync();
return ResponseResult;
}
}
}
catch (WebException ex)
{
WebResponse errorResponse = ex.Response;
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8"));
string errorText = reader.ReadToEnd();
}
throw;
}
catch (ArgumentNullException ex)
{
throw;
}
catch (InvalidOperationException ex)
{
throw;
}
catch (HttpRequestException ex)
{
throw;
}
我是 API 管理层的新手。我创建了一个基本 WEB API 并托管到 API 应用程序(应用程序服务)。 URL 正在按预期工作并且正在返回数据。即 http://xyz.azurewebsites.net/api/webapi
但是当我在 API 管理中添加 API 应用程序时,我得到了不同的 URL 我添加了额外的后缀,但是当我试图打开时浏览器 Link--> https://abc.azure-api.net/God
出现以下错误
{ "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
如果 API APP 没有问题,那么 API 管理就不应该有问题。如果我遗漏了什么,请指导我。
NB--> 我已经尝试在 fiddler 中添加订阅密钥,但即将出现不同的问题。但是要访问 URL 它基本上不需要订阅密钥。
如果您为产品设置启用需要订阅的选项,那么您必须通过以下header Ocp-Apim-Subscription-Key
。
即使您提供订阅密钥,该密钥也应该属于 API 包含的产品。
如果您不需要订阅选项,请在产品设置中将其禁用。
如果您为产品设置启用需要订阅的选项,那么您必须通过以下 header Ocp-Apim-Subscription-Key。即使您提供订阅密钥,该密钥也应该属于 API 包含的产品。在您的产品中添加您的 API。
- Select 来自 Azure 门户的产品 menu/link。
- Select 列表中的产品。
- Select select 产品选项中的 API。
- 单击“添加”按钮并从列表中单击 select 您的 API,然后单击 Select。
您可以通过 Postman 或您的代码使用 API。 您必须在 header 密钥 (Ocp-Apim-Subscription-Key) 中传递订阅密钥。
您可以在 api 个人资料屏幕上的开发人员门户中找到订阅密钥 (Primary/Secondary)。
您必须在请求中传递您的订阅密钥 headers。
将此添加到您的 C# 代码中
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("Authorization", BearerToken);
request.Headers.Add("Ocp-Apim-Subscription-Key", config["OcpApimSubscriptionKey"]);
将此添加到您的应用设置文件
"OcpApimSubscriptionKey": "your key",
示例代码:
try
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization", BearerToken);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", config["OcpApimSubscriptionKey"]);
HttpResponseMessage response = client.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
return response.Content.ReadAsStringAsync().Result;
}
else
{
var ResponseResult = await response.Content.ReadAsStringAsync();
return ResponseResult;
}
}
}
catch (WebException ex)
{
WebResponse errorResponse = ex.Response;
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8"));
string errorText = reader.ReadToEnd();
}
throw;
}
catch (ArgumentNullException ex)
{
throw;
}
catch (InvalidOperationException ex)
{
throw;
}
catch (HttpRequestException ex)
{
throw;
}