[英]Error during serialization or deserialization using in 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
您不需要通過應用serializer.MaxJsonLength = Int32.MaxValue;
直接配置您的 web api 而是您的發送者序列化器實例serializer.MaxJsonLength = Int32.MaxValue;
你從哪里發送那個 json 對象
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.