Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当我在ajax调用中返回太多的json行时,为什么会出现Http错误500?_Asp.net_Asp.net Mvc_Asp.net Mvc 5_Asp.net Mvc 5.2_Asp.net Mvc 5.1 - Fatal编程技术网

Asp.net 当我在ajax调用中返回太多的json行时,为什么会出现Http错误500?

Asp.net 当我在ajax调用中返回太多的json行时,为什么会出现Http错误500?,asp.net,asp.net-mvc,asp.net-mvc-5,asp.net-mvc-5.2,asp.net-mvc-5.1,Asp.net,Asp.net Mvc,Asp.net Mvc 5,Asp.net Mvc 5.2,Asp.net Mvc 5.1,这是我的密码: var context = _contextFactory.Create(GetClient()); var r = from p in context.MyTable.ToList() select p; int tot; var firstPageData = PagedResult(r, 0, 200000, rows => new { rows.I

这是我的密码:

    var context = _contextFactory.Create(GetClient());
            var r = from p in context.MyTable.ToList()
                    select p;
            int tot;
            var firstPageData = PagedResult(r, 0, 200000, rows => new { rows.Id }, true, out tot);
            return Json(new { result = "ok", rows = firstPageData }, JsonRequestBehavior.AllowGet);
PagedResult()的第一个和第二个参数(0和200000)是要返回的页码和行数。这将返回http错误500

但是当我将第二个参数更改为PagedResult()以仅返回20行时,它工作正常。像这样:

    var context = _contextFactory.Create(GetClient());
            var r = from p in context.MyTable.ToList()
                    select p;
            int tot;
            var firstPageData = PagedResult(r, 0, 20, rows => new { rows.Id }, true, out tot);
            return Json(new { result = "ok", rows = firstPageData }, JsonRequestBehavior.AllowGet);
是不是因为我返回了太多http无法处理的行,所以出现了这个错误?或者是否需要进行配置,以便返回太多的行


谢谢,

为ASP.NETMVC使用自定义的JsonResult类,以避免超出MaxJsonLength的异常

public class LargeJsonResult : JsonResult
    {
        const string JsonRequest_GetNotAllowed = "This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.";
        public LargeJsonResult()
        {
            MaxJsonLength = 1024000;
            RecursionLimit = 100;
        }

        public int MaxJsonLength { get; set; }
        public int RecursionLimit { get; set; }

        public override void ExecuteResult( ControllerContext context )
        {
            if( context == null )
            {
                throw new ArgumentNullException( "context" );
            }
            if( JsonRequestBehavior == JsonRequestBehavior.DenyGet &&
                String.Equals( context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase ) )
            {
                throw new InvalidOperationException( JsonRequest_GetNotAllowed );
            }

            HttpResponseBase response = context.HttpContext.Response;

            if( !String.IsNullOrEmpty( ContentType ) )
            {
                response.ContentType = ContentType;
            }
            else
            {
                response.ContentType = "application/json";
            }
            if( ContentEncoding != null )
            {
                response.ContentEncoding = ContentEncoding;
            }
            if( Data != null )
            {
                JavaScriptSerializer serializer = new JavaScriptSerializer() { MaxJsonLength = MaxJsonLength, RecursionLimit = RecursionLimit };
                response.Write( serializer.Serialize( Data ) );
            }
        }
    }
并将其用作

return new LargeJsonResult { Data = Your Data, JsonRequestBehavior = `System.Web.Mvc.JsonRequestBehavior.AllowGet };`

您收到的错误是什么?如果您收到的是
HTTP500
,则表示您的应用程序出现异常。请提供详细信息。我希望您知道,在context.MyTable.ToList()中从p执行
var r=from意味着您将整个表加载到内存中,然后返回一个子集,而不仅仅是向数据库请求前x行……我认为它与MVC没有任何共同之处。