c# - 在 asp.net webapi POST 中使用序列化或反序列化时出错
问题描述
我试图在一个对象中发布 2 个图像(4MB + 大小)的 base64 字符串。这是模型样本:
public class DemoModel
{
public string No{ get; set; }
public string OneBase64 { get; set; }
public string TwoBase64 { get; set; }
}
这是我尝试在 webapi 控制器中捕获 POST ed 数据的方式。
[HttpPost]
public string PostSimpleData([FromBody] DemoModel data)
{
// do something
}
但是当我发布 json 它显示序列化/反序列化错误。
然后我在 webconfig 中添加了几行来增加响应大小和 json 大小。
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483647" />
</webServices>
</scripting>
</system.web.extensions>
和
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
和
<httpRuntime targetFramework="4.5" maxRequestLength="2147483647" />
还是没有结果。如果我发布除 Base64 数据之外的任何内容,它会自动序列化并与控制器方法中的对象绑定。
这是我要发布的 JSON。
{
"NO" : "01",
"OneBase64" : "Some base 64 Data",
"TwoBase64" : "Some base 64 Data"
}
任何形式的帮助表示赞赏。
解决方案
我从这个改变了我的方法
[HttpPost]
public string PostSimpleData([FromBody] DemoModel data)
{
// do something
}
对此
[HttpPost]
public string PostSimpleData()
{
Stream req = Request.InputStream;
req.Seek(0, System.IO.SeekOrigin.Begin);
string json = new StreamReader(req).ReadToEnd();
DemoModel model = JsonConvert.DeserializeObject<DemoModel>(json);
//Now i Can Do whatever I want with this data
}
它就像一个魅力。感谢这篇文章ASP.Net WEB API Failing POST Large JSON data from Mobile
推荐阅读
- javascript - Firebase Javascript Ajax 和会话问题
- web-scraping - 抓取衣物的性别
- node.js - 如何使用 node.js 比较 mongoDB ObjectIds 并删除文档数组中的重复项?
- webrtc - 将 SIP 与 webRTC 连接
- docker - 如何更改 WordPress 容器中 www-data 的 UID 和 GID 以匹配 linux 中的主机
- recursion - 消除上下文无关语法中的左递归
- reactjs - 出现错误:模块解析失败:反应 js 中的意外令牌(1:0)
- angular - 这段代码有什么作用?Angular Firebase 身份验证
- c# - 用于 XML 序列化的 C# 类
- android - 使用“removeBond”方法取消配对的蓝牙设备在 redmi android 设备中不起作用