Ошибка при попытке опубликовать обсуждение комментария к рабочему элементу с помощью REST API Azure DevOps

Я пытаюсь опубликовать комментарий обсуждения для рабочего элемента, используя REST API version = 5.1-preview.3.

Резюме

Тип: POST и C# HttpClient

Однако независимо от того, как я пытаюсь работать с ним, я всегда получаю ответ:

StatusCode: 415, ReasonPhrase: 'Unsupported Media Type'

Внутренний ответ примерно такой:

{"$id":"1","innerException":null,"message":"TF400898: An Internal Error Occurred. Activity Id: d634683c-0b2e-4bfb-9a66-ee99f32404c6.","typeName":"System.Web.Http.HttpResponseException, System.Web.Http","typeKey":"HttpResponseException..

Я отправляю данные / комментарий в следующем формате JSON:

[
  {
    "text": "Test Comment"
  }
]

Как упомянуто в документах:

https://docs.microsoft.com/en-us/rest/api/azure/devops/wit/comments/add?view=azure-devops-rest-5.1

Запрос

Я пытаюсь поразить API:

POST https://dev.azure.com/fabrikam/Fabrikam-Fiber-Git/_apis/wit/workItems/299/comments?api-version=5.1-preview.3

используя приведенный ниже пример кода:

public class Comment
{
    [JsonProperty("text")]
    public string Text { get; set; }
}
var comment = new Comment()
{
    Text = "Test Comment"
};

var comments = new List<Comment>();
comments.Add(comment);

var body = JsonConvert.SerializeObject(comments);

var postValue = new StringContent(body, Encoding.UTF8, "application/json-patch+json");


using (HttpClient httpClient = new HttpClient())
{
      httpClient.DefaultRequestHeaders.Accept.Clear();
      httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
      httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", _token))));

      using (HttpRequestMessage httpRequestMessage = new HttpRequestMessage(new HttpMethod("POST"), _apiUrl) { Content = postValue })
      {
          var httpResponseMessage = httpClient.SendAsync(httpRequestMessage).Result;
      }
}

Я считаю, что приведенный выше фрагмент должен иметь возможность добавить комментарий к рабочему элементу. Однако независимо от того, как я пытаюсь работать с ним, я всегда получаю ответ:

отклик

StatusCode: 415, ReasonPhrase: 'Unsupported Media Type'

Внутренний ответ примерно такой:

{"$id":"1","innerException":null,"message":"TF400898: An Internal Error Occurred. Activity Id: d634683c-0b2e-4bfb-9a66-ee99f32404c6.","typeName":"System.Web.Http.HttpResponseException, System.Web.Http","typeKey":"HttpResponseException..

Не могли бы вы помочь мне здесь?

Заранее спасибо!

2 ответа

Спасибо за ответ.

Изменения, предложенные @Michael вместе со следующим изменением, сделали свое дело.

var postValue = new StringContent(body, Encoding.UTF8, "application/json");

Обновлен тип контента "application/json-patch+json" до "application/json".

Вот аналогичная ветка, в которой обсуждается этот вопрос в сообществе разработчиков.

Я согласен с комментарием Майкла выше, и это работает без вложения [], что не соответствует примеру, приведенному в официальной документации REST API.

Я бы порекомендовал вам открыть вопрос здесь и исправить это в документации. Вы также можете открыть вопрос здесь, чтобы получить немедленную помощь от команды разработчиков Azure.

Спасибо, что сообщили нам об этом!

Другие вопросы по тегам