簡體   English   中英

在 asp.net webapi POST 中使用序列化或反序列化期間出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM