带有属性路由的 PUT 请求 - 错误 415

问题描述

我收到来自客户端的 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 响应 - 媒体类型不受支持

感谢任何建议。

解决方法

只需更改您的路由属性

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

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