[ad_1]
画像をbase_64形式でデータベースに保存しました。 Ajax を使用してコントローラーから html にそのデータを取得します。 コントローラーからレコードをフェッチしているときに、カスタム フィルターの例外で次のエラーが発生します。
JSON JavaScriptSerializer を使用したシリアル化または逆シリアル化中にエラーが発生しました。 文字列の長さが maxJsonLength プロパティで設定された値を超えています。
cshtml – 呼び出された Ajax:
function imagepop(no) { $.ajax({ type: "POST", contentType: 'application/x-www-form-urlencoded;charset=UTF-8', url:"/Controller/GetImage", //data: arr, data: { 'No': no, 'filetype': obj, 'pageNo': pageNo }, //dataType: "json", success: function (result) { debugger; $("#loader_Prcessing").hide(); if (result.Status == "200") { } } }); }
コントローラ:
public JsonResult GetImage(string no, string filetype, string pageNo) { var jsonResult = Json(OutputInfo.lstUploadImgVideoDoc, JsonRequestBehavior.AllowGet); jsonResult.MaxJsonLength = int.MaxValue; return Json(jsonResult); }
web.config:
<system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="2147483647"/> </webServices> </scripting> </system.web.extensions>
画像をbase_64形式でデータベースに保存しました。 Ajax を使用してコントローラーから html にそのデータを取得します。 コントローラーからレコードをフェッチしているときに、カスタム フィルターの例外で次のエラーが発生します。
JSON JavaScriptSerializer を使用したシリアル化または逆シリアル化中にエラーが発生しました。 文字列の長さが maxJsonLength プロパティで設定された値を超えています。
cshtml – 呼び出された Ajax:
関数 imagepop(いいえ) {
$.ajax({
タイプ: “ポスト”,
contentType: ‘application/x-www-form-urlencoded;charset=UTF-8’,
url:”/コントローラー/GetImage”,
//データ: arr,
data: { ‘いいえ’: いいえ, ‘filetype’: obj, ‘pageNo’: pageNo },
//dataType: “json”,
成功: 関数 (結果) {
デバッガ;
$(“#loader_Processing”).hide();
if (result.Status == “200”) {
}
}
});
}
コントローラ:
public JsonResult GetImage(string no, string filetype, string pageNo)
{
var jsonResult = Json(OutputInfo.lstUploadImgVideoDoc, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
Json(jsonResult) を返します。
}
web.config:
<スクリプト>
<ウェブサービス>
構成レベルでこれに対する解決策はありますか? または、コードの変更を最小限に抑えた提案。
私が試したこと:
Googleで提案されているように多くのことを試しましたが、成功しませんでした。これについて助けてください
解決策 1
まず、画像をバイナリ以外の形式でデータベースに保存すると、特に base-64 エンコーディングを使用してバイナリ フィールドにバイトを保存した場合よりも、画像データがかなり大きくなります。
次に、すべてを json 文字列でラップすると、さらに悪化します。
の <jsonserialization maxjsonlength="" />
現在、web.config の値は無視されています。 はい、これを回避する方法があり、あなたはすでにそれを実行しています!
コードの問題は、適切な JsonResult オブジェクトを破棄し、まったく新しいオブジェクトを作成してそれを返すことです。 修正されたコードは次のようになります。
public JsonResult GetImage(string no, string filetype, string pageNo) { var jsonResult = Json(OutputInfo.lstUploadImgVideoDoc, JsonRequestBehavior.AllowGet); jsonResult.MaxJsonLength = int.MaxValue; return jsonResult; }
[ad_2]
コメント