私のデータベースから画像を取得しようとしていますが、小さな画像でうまく動作しますが、Windows 7のデフォルト画像(Desert、Koala、Penguins、Tulipsなど)で試しても機能しません。このエラー:シリアライズまたはデシリアライズ中にエラーが発生しました。 JSON JavaScriptSerializer
"Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property."
私はこれで私のweb.configファイルを変更します。
:<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483647"/>
</webServices>
</scripting>
は私が画像を取得するために使用することは、このコードです
public static byte[] Serialize(object obj) { var binaryFormatter = new BinaryFormatter(); var ms = new MemoryStream(); binaryFormatter.Serialize(ms, obj); return ms.ToArray(); } [WebMethod] public string ObtenerImagen(int id) { DataTable dt = new DataTable(); dt = conn.consultarImagen("alertas", id); Imagenes img; List<Imagenes> lista = new List<Imagenes>(); for (int i = 0; i < dt.Rows.Count; i++) { img = new Imagenes(); img.Id = Convert.ToInt32(dt.Rows[i]["Id"]); img.FileName = dt.Rows[i]["FileName"].ToString(); img.Type = dt.Rows[i]["ContentType"].ToString(); img.Content = Convert.ToBase64String(Serialize(dt.Rows[i]["Content"])); img.IdAlerta = Convert.ToInt32(dt.Rows[i]["IdAlerta"]); img.Pie = dt.Rows[i]["PieFoto"].ToString(); //Llenado de lista lista.Add(img); img = null; } JavaScriptSerializer js = new JavaScriptSerializer(); string lineas = js.Serialize(lista); return lineas; }
そして私は、Ajaxと、このjavascript関数を使用します。
success: function (data) {
var aRC = JSON.parse(data.d);
var lineas = "";
for (var i = 0; i < aRC.length; i++) {
var id = aRC[i].Id;
var num = id;
var rev = aRC[i].FileName;
var pur = aRC[i].Type;
var status = aRC[i].Content;
var imagen = status.substring(36, status.length - 37);
var owner = aRC[i].IdAlerta;
var pie = aRC[i].Pie;
lineas += '<div class="col-lg-3 col-md-4 col-xs-3 thumb marco">';
lineas += '<a class="thumbnail" href="#">';
lineas += '<img class="responsive" src="data:image/jpeg;base64,' + imagen + '" />';
lineas += '<p class="text-justify" id="Pie' + i + '">' + pie + '</p>';
lineas += '</a>';
lineas += '<span class="btn btn-xs btn-success fa fa-pencil hidden-print" id="EditPie' + i + '"></span>';
lineas += '<input type="text" class="form-control hidden hidden-print" id="PiePag' + i + '"> <span class="btn btn-xs btn-success fa fa-check hidden hidden-print" id="OkPie' + i + '"></span>';
lineas += '</div>';
}
$('#Imagenes').html(lineas);
私はカントーこれをどう解決するのですか?私には分かりません。
EDIT:1枚の画像で細かい動作しますが、私はあなたがこのように作成したインスタンスを経由して最大JSONの長さを設定してみてください以上1枚の画像
万が一、このMVCはありますか? – Santi
いいえ、MVCではなく、AJAX呼び出しとJavaScriptを備えたHTMLとC#WebServiceだけです。 –
ああ、私は、謝罪を参照してください。これはMVCの既知の警告で、Web.Configの 'maxJsonLength'は基本的に無視され、コード内で宣言されなければなりません。私は他の提案はしていないので、あなたの質問に答えるために他の誰かを残します。がんばろう! – Santi