Невозможно создать подписку на сервисный перехватчик или веб-перехватчик в Azure ADO с помощью Rest API C#.

Я пытаюсь создать подписку на сервисный перехватчик/веб-перехватчик для события создания рабочего элемента, но он не работает. Я получаю сообщение об ошибке: «StatusCode: 203, ReasonPhrase: «Неавторитетная информация». Я использую токен личного доступа для аутентификации. Этот токен имеет полный доступ. Я использую приведенный ниже код для создания подписки

//urlType — это URL-адрес функции Azure ---https://function-xxxxxxxx-syncxxxxxxxx-v1.azurewebsites.net/api/CreateWorkItem?code=M4bvxxxxxxxxxxxxxxx

//workItemType — это пример URL-адреса запроса «workitem.created» ---https://dev.azure.com/TestOrg/TestProject/_apis/hooks/subscriptions?api-version=7.0

       var subscription = new
            {
                publisherId = "tfs",
                eventType = workItemType,
                resourceVersion = "1.0",
                consumerId = "webHooks",
                consumerActionId = "httpRequest",
                consumerInputs = new
                {
                    url = urlType
                }
            };


            var subscriptionJson = JsonConvert.SerializeObject(subscription);
            var content = new StringContent(subscriptionJson, System.Text.Encoding.UTF8, "application/json");
            
                requestUri = $"{baseUrl + orga}/{project}/_apis/hooks/subscriptions?api-version=7.0"; 

            using (HttpClient client = new HttpClient())
            {                    
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", personalAccessToken); // personalAccessToken is having full access
                var response = await client.PostAsync(requestUri, content);
                response.EnsureSuccessStatusCode();
                var responseContent = await response.Content.ReadAsStringAsync();
                var createdSubscription = JsonConvert.DeserializeObject<dynamic>(responseContent);
                Console.WriteLine($"Service hook subscription created. Subscription ID: {createdSubscription.id}");
            }

Пожалуйста, помогите в этом.

1 ответ

Исправлена ​​проблема

        var subscription = new
            {
                publisherId = "tfs",
                eventType = workItemType,
                resourceVersion = "1.0",
                consumerId = "webHooks",
                consumerActionId = "httpRequest",
                publisherInputs = new
                {
                    projectId = project.Value
                },
                consumerInputs = new
                {
                    url = urlType
                }
            };

            var subscriptionJson = JsonConvert.SerializeObject(subscription);
            var content = new StringContent(subscriptionJson, System.Text.Encoding.UTF8, "application/json");
            string requestUri = "";
            requestUri = $"{baseUrl + orga}/_apis/hooks/subscriptions?api-version=7.0";

            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", pat))));
                var response = await client.PostAsync(requestUri, content);
                response.EnsureSuccessStatusCode();
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine($"Service hook subscription: {workItemType} created for project: {project.Key}");
            }
Другие вопросы по тегам