API管理URL正在提供缺少订阅密钥问题



我是API管理的新手。我已经创建了一个基本的WEB API&托管到API应用程序(应用程序服务(。URL正在按预期工作&它正在返回数据。即http://xyz.azurewebsites.net/api/webapi

但是当我在API管理中添加API应用程序时,我会得到不同的URL,我会添加额外的后缀,但当我试图在浏览器中打开链接-->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管理就不应该有问题。如果我缺少什么,请指导我。

注意-->我已经尝试在fiddler中添加订阅密钥,它的不同问题即将出现。但是访问URL基本上不需要订阅密钥。

如果启用了"要求订阅产品设置"选项,则必须传递以下标头Ocp-Apim-Subscription-Key。即使您提供订阅密钥,该密钥也应该属于API所包含的产品。如果您不需要subscription选项,请在产品设置中禁用它。

如果您为产品设置启用"要求订阅"选项,则必须传递以下标头Ocp-Apim subscription Key。即使您提供订阅密钥,该密钥也应该属于API所包含的产品。在您的产品中添加您的API。

  1. 从Azure门户选择"产品"菜单/链接
  2. 从列表中选择产品
  3. 从选定的产品选项中选择API
  4. 单击添加按钮,从列表中选择您的API,然后单击选择

您可以使用Postman或您的代码来使用您的API。您必须在头密钥(Ocp-Apim subscription key(中传递订阅密钥。

您可以在配置文件屏幕上的api开发者门户中找到订阅密钥(Primary/Secondary(。

您必须在请求头中传递订阅密钥。

将此添加到您的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;
}

相关内容

  • 没有找到相关文章

最新更新