支持在ODataController(在.net中)接受二进制数据的最佳方法是什么?二进制流可以很大,至少2MB。我有一个从ODataController派生的控制器(System.Web.Http.Odata.OdataController)。
我目前在ODataController中的内容是:
[HttpPut] public float Put(string userId,string userType,[FromBody] string base64data)
两个痛点:
在具有更高允许限制和有效方式的odata端点上支持二进制数据的方法是什么?
答案 0 :(得分:1)
如何让此控制器接受除以外的内容类型 application / json(application / octet-stream)
使用自定义媒体类型格式化程序Checkout an example here...
我在上传时使用了base64编码的二进制数据字符串。 有更好的方法吗?
如果您不想通过自定义媒体格式化工具路线,那么您最好将二进制数据发布为multipart/form-data
。 Sample here
base64data解析为null,除非字符串包装在对象中。 例如,像"这是一个字符串"结果为null。该 身体," {"价值":"这是一个字符串"}"解析得很好。
这是因为默认的json媒体格式化程序需要一个json字符串。但是,您的自定义媒体类型格式化程序将采用原始字符串。
如果我发送超过2MB的数据,我再次收到空(没有 错误)。
因为您超过了最高限额。您可以使用以下方式更改它:
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>