支持在ODataController上(在.net中)接受二进制数据的最佳方法是什么?二进制流可以是大的,至少2MB。我有一个从ODataController (System.Web.Http.Odata.OdataController)派生的控制器。
我目前在ODataController中的内容是:
HttpPut公共浮动放置( string userId,string userType,FromBody string base64data)
两个痛点:
在odata端点上支持二进制数据的方法是什么?允许的限制更高,方法更有效?
发布于 2014-05-09 04:28:41
如何使此控制器接受application/json以外的内容类型(可能是application/octet)
使用自定义媒体类型格式化程序看看这里的一个例子。
我使用上传中二进制数据的base64编码字符串。有没有更好的方法?
如果您不想通过自定义媒体格式化程序路由,那么最好将二进制数据作为multipart/form-data发布。这里的样品
除非字符串被包装在对象中,否则base64data将解析为null。例如,像“这是一个字符串”这样的体会导致null。主体“{”值“:”这是字符串“}”解析良好。
这是因为默认的json媒体格式化程序需要一个json字符串。但是,您的自定义媒体类型格式化程序将接受原始字符串。
如果发送的数据超过2MB,则再次收到null (没有错误)。
因为你已经超过了极限。您可以使用以下方法来改变这种情况:
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>在这里了解更多http://support.microsoft.com/kb/2661403
https://stackoverflow.com/questions/23552105
复制相似问题