C#HttpClient在补丁请求时返回415种不支持的媒体类型

C#HttpClient在补丁请求时返回415种不支持的媒体类型,c#,rest,.net-core,patch,http-status-code-415,C#,Rest,.net Core,Patch,Http Status Code 415,我们有一个.netcore 3.1 ApiController,其端点监听补丁请求,并定义了一个用于集成/API测试的测试服务器 使用Postman发送的补丁请求工作正常,但通过XUnit测试中的HttpClient发送的请求失败,媒体类型为415,不受支持 邮递员修补程序请求: 除了承载令牌和内容类型“application/json”之外,没有其他特定的头 在测试中,我们将WebApplicationFactory及其factory.CreateClient()用于我们的HttpClient

我们有一个.netcore 3.1 ApiController,其端点监听补丁请求,并定义了一个用于集成/API测试的测试服务器

使用Postman发送的补丁请求工作正常,但通过XUnit测试中的HttpClient发送的请求失败,媒体类型为415,不受支持

邮递员修补程序请求: 除了承载令牌和内容类型“application/json”之外,没有其他特定的头

在测试中,我们将WebApplicationFactory及其factory.CreateClient()用于我们的HttpClient

Json序列化不应该有问题,因为我通过调试器查看了内容,它似乎序列化得很好

此外,我们的POST方法完全是开箱即用的,代码完全相同(将“补丁”替换为“POST”等)

期待一些建议。如果你需要更多的信息,请告诉我。非常感谢

控制器:

[HttpPatch("{id}")]
public async Task<ActionResult<Unit>> Edit(Edit.Command request)
{
     return await Mediator.Send(request);
}
其中,helper方法AddJsonContent定义为:

public void AddJsonContent(HttpRequestMessage request, object content)
{
      request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
      string serializedContent = JsonConvert.SerializeObject(content);
      request.Content = new StringContent(serializedContent, Encoding.UTF8, "application/json");
}
[InlineData(/* inline data goes here */)]
public async void TestEdit_Ok(/* required parameters for the test */)
{
    var request = new HttpRequestMessage(new HttpMethod("PATCH"), url));
    request.Headers.Add("Authorization", "Bearer " + token);

    /* create patch document logic goes here */

    var command = new Command()
    {
          Id = target,
          PatchDocument = patchDocument,
    };

    _testHelper.AddJsonContent(request, command);

    // Act
    var response = await _client.SendAsync(request);

    // Assert
    Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
public void AddJsonContent(HttpRequestMessage request, object content)
{
      request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
      string serializedContent = JsonConvert.SerializeObject(content);
      request.Content = new StringContent(serializedContent, Encoding.UTF8, "application/json");
}