【发布时间】:2020-06-08 13:38:16
【问题描述】:
在 .net core 之前,Rick Strahl 有一篇很棒的文章,介绍了如何在 web api 中发布和接受原始参数。我能够使用他的解决方案来接受多个原始参数。
.net core 发生了一些变化,他在这里提供了类似的解决方案:https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers
虽然只有一个问题,这个解决方案似乎只支持 1 个参数。在之前的解决方案中,他在读取内容时缓存了数据,以便后续请求不需要再次读取(因为它只能读取一次)。但是,这次不同的是,您必须使用 [FromBody] 属性,如果您不使用该属性,它不会触发自定义 InputFormatter 上的方法来获取参数。但是,如果您多次使用此属性,.net 会引发异常。它完全忽略了这样一个事实,即您可能已经自己处理了缓存内容的问题,因此它似乎绝对强制解决了只允许您以这种方式发布单个参数的问题。
我一直能够在我使用过的其他框架中传递多个单个原始值,并且我对必须为我可能在所有服务中使用的每个参数组合创建一个强类型类库不感兴趣来电。有没有办法解决这个问题?
在为 web api 找到解决方法之前(在核心之前),有人决定不使用 webapi 只是因为这个问题,所以我知道我并不孤单。所以要明确一点,我知道如何修改我的代码以使用替代解决方案完成手头的任务......但如果可能的话,我希望实际上能够使用多个参数。
【问题讨论】: