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

PUT Request with Attribute Routing - Error 415

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

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

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

[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")]