【问题标题】:PUT Request with Attribute Routing - Error 415带有属性路由的 PUT 请求 - 错误 415
【发布时间】:2021-05-03 12:28:41
【问题描述】:

我收到来自客户端的 PUT 请求,如下所示:

PUT /calendars/johndoe/home/132456762153245.ics HTTP/1.1
Content-Type: text/calendar; charset=utf-8

我有一个带有属性路由和方法的控制器类设置,如下所示:

[HttpPut]
[Consumes("text/calendar")
[Route("calendars/{userName:alpha}/{calendarName:alpha}/{icsFile}")]
public async Task<ActionResult<string>> Put([FromRoute] string userName, [FromRoute] string calendarName, [FromBody] string icsFile)

        {...

我尝试了不同的路由属性和包罗万象的参数,但它不适用于整个 url 路径。

我收到错误 415 响应 - 媒体类型不受支持

感谢任何建议。

【问题讨论】:

    标签: c# asp.net-core routes asp.net-core-webapi caldav


    【解决方案1】:

    只需更改您的路线属性

    [Route("calendars/{userName}/{calendarName}/{icsFile}")]
    public async Task<ActionResult<string>> Put( string userName, string calendarName,  string icsFile)
    {
    ....
    }
    

    恕我直言,最好删除 [HttpPut] 和 [Consumes("text/calendar")]

    【讨论】:

    • 我会试一试并报告。
    • 谢谢!根据您的示例,删除 [FromBody] 参数是一个线索!这开始允许接收请求。事实证明,文本内容类型没有解析器,这就是内容类型被拒绝的原因。我现在只是从正文中读取流来获取文本。
    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2019-06-11
    相关资源
    最近更新 更多