web-dev-qa-db-fra.com

L'URL de gestion de l'API donne la clé d'abonnement manquante

Je suis nouveau dans la gestion des API. J'ai créé une API WEB de base et hébergé sur l'API APP (service App). L'URL fonctionne comme prévu et renvoie les données. c'est à dire. http://xyz.azurewebsites.net/api/webapi

Mais lorsque j'ajoute l'API App dans la gestion des API, j'obtiens une URL différente avec le suffixe supplémentaire que j'ajoute, mais quand j'essaie d'ouvrir dans le navigateur Lien -> https://abc.Azure-api.net/God je reçois l'erreur ci-dessous

{ "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }

Si ce n'est pas un problème avec l'API APP, cela ne devrait pas être avec la gestion des API. Veuillez me guider si quelque chose me manque.

NB -> J'ai essayé d'ajouter la clé d'abonnement au violoniste, son problème différent arrive. mais pour accéder à une URL, il ne nécessite pas de clé d'abonnement.

9
lokanath das

Si vous activez l'option Exiger un abonnement pour les paramètres du produit, vous devez transmettre l'en-tête ci-dessous Ocp-Apim-Subscription-Key. Même si vous fournissez une clé d'abonnement, la clé doit appartenir au produit inclus dans l'API. Si vous ne souhaitez pas l'option d'abonnement, désactivez-la dans les paramètres du produit.

7
VinuBibin

Si vous activez l'option Exiger un abonnement pour les paramètres du produit, vous devez transmettre l'en-tête ci-dessous Ocp-Apim-Subscription-Key. Même si vous fournissez une clé d'abonnement, la clé doit appartenir au produit inclus dans l'API. Ajoutez vos API dans vos produits.

  1. Sélectionnez le menu/lien Produits dans le portail Azure.
  2. Sélectionnez le produit dans la liste.
  3. Sélectionnez les API parmi les options de produits sélectionnées.
  4. Cliquez sur le bouton Ajouter et sélectionnez votre API dans la liste et cliquez sur Sélectionner.

Vous êtes bon d'utiliser votre API en utilisant Postman ou votre code. Vous devez passer la clé d'abonnement dans la clé d'en-tête (Ocp-Apim-Subscription-Key).

Vous pouvez trouver la clé d'abonnement (primaire/secondaire) dans le portail des développeurs API sur l'écran de profil.

3
RaviK

Vous devez passer votre clé d'abonnement dans les en-têtes de demande.

Ajoutez ceci à votre code C #

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("Authorization", BearerToken);

 request.Headers.Add("Ocp-Apim-Subscription-Key", config["OcpApimSubscriptionKey"]);

Ajoutez ceci à votre fichier de paramètres d'application

"OcpApimSubscriptionKey": "your key",

Exemple de code:

 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;
            }
0
Kurkula