首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ODataController和二进制数据

ODataController和二进制数据
EN

Stack Overflow用户
提问于 2014-05-08 20:41:46
回答 1查看 1.6K关注 0票数 0

支持在ODataController上(在.net中)接受二进制数据的最佳方法是什么?二进制流可以是大的,至少2MB。我有一个从ODataController (System.Web.Http.Odata.OdataController)派生的控制器。

  • 如何使此控制器接受application/json以外的内容类型(可能是application/octet)
  • 我使用上传中二进制数据的base64编码字符串。有没有更好的方法?

我目前在ODataController中的内容是:

HttpPut公共浮动放置( string userId,string userType,FromBody string base64data)

两个痛点:

  • 除非字符串被包装在对象中,否则base64data将解析为null。例如,像“这是一个字符串”这样的体会导致null。主体“{”值“:”这是字符串“}”解析良好。
  • 如果发送的数据超过2MB,则再次收到null (没有错误)。

在odata端点上支持二进制数据的方法是什么?允许的限制更高,方法更有效?

EN

回答 1

Stack Overflow用户

发布于 2014-05-09 04:28:41

如何使此控制器接受application/json以外的内容类型(可能是application/octet)

使用自定义媒体类型格式化程序看看这里的一个例子。

我使用上传中二进制数据的base64编码字符串。有没有更好的方法?

如果您不想通过自定义媒体格式化程序路由,那么最好将二进制数据作为multipart/form-data发布。这里的样品

除非字符串被包装在对象中,否则base64data将解析为null。例如,像“这是一个字符串”这样的体会导致null。主体“{”值“:”这是字符串“}”解析良好。

这是因为默认的json媒体格式化程序需要一个json字符串。但是,您的自定义媒体类型格式化程序将接受原始字符串。

如果发送的数据超过2MB,则再次收到null (没有错误)。

因为你已经超过了极限。您可以使用以下方法来改变这种情况:

代码语言:javascript
复制
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>

在这里了解更多http://support.microsoft.com/kb/2661403

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23552105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档