【问题标题】:API returning unsupported media type in ASP.NET CoreAPI 在 ASP.NET Core 中返回不受支持的媒体类型
【发布时间】:2021-08-05 02:08:01
【问题描述】:

当我向它发出请求时,我有以下 API,它返回不受支持的媒体类型我不知道是什么导致了这个问题。

[HttpPost("select/manager/{projectId}")]
public async Task<ActionResult<string>> SetProjectManager([FromBody] string name, string projectId)
{
    var (isValid, username, password) = spManager.GetCredentials(HttpContext.Request.Headers["x-token"]);

    if (!isValid || string.IsNullOrEmpty(name))
    {
        return BadRequest("Bad Key!");
    }

    var result = await spManager.SetProjectManager(username, password, name, projectId);

    if (result.Success == true)
    {
        return Ok(new SubmissionResponse { Success = true, ErrorCode = null });
    }
    else
    {
        return NotFound(new SubmissionResponse { Success = false, ErrorCode = "Not Found!" });
    }
}

我在标头中发送了一个令牌,但它没有显示在屏幕截图中:

【问题讨论】:

  • “HTTP 415 Unsupported Media Type 客户端错误响应代码表示服务器拒绝接受请求,因为负载格式不支持。” 415 Unsupported Media Type
  • 需要将请求的内容类型头设置为JSON媒体类型。
  • 尝试使用 {"name":"crisof"} 并选择 Json 而不是文本

标签: c# api asp.net-core .net-core


【解决方案1】:

当我向它发出请求时,它返回不受支持的媒体类型

HTTP 415 Unsupported Media Type 错误表示服务器拒绝接受请求,因为负载格式是不受支持的格式。请注意,它不为 ASP.NET Core Web API 中的纯文本提供内置输入格式化程序。

该框架为 JSON 和 XML 提供内置的输入和输出格式化程序。如@Nkosi 建议的那样,为了使您的数据请求正常工作,您可以尝试将Content-Type 更改为application/json

此外,如果您真的希望您的 API 能够很好地处理纯文本输入,您可以尝试实现自定义纯文本输入格式化程序。

https://docs.microsoft.com/en-us/aspnet/core/web-api/advanced/custom-formatters?view=aspnetcore-5.0

【讨论】:

    【解决方案2】:

    用 {"name": "cristof"} 替换 "cristof" 并将正文类型更改为 Json。

    【讨论】:

    • 我按照你的建议做了,但没有奏效,所以我为管理器创建了一个类模型,其中包含一个属性,即名称,然后我从正文而不是字符串名称中读取此属性,然后它工作,但我不知道这是否是最好的解决方案...谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 2020-09-25
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2016-11-26
    • 1970-01-01
    相关资源
    最近更新 更多