1

I keep receiving this error when trying to get a json string into my kendo grid. I have set the max size in the web.config

<system.web.extensions>
<scripting>
  <webServices>
    <jsonSerialization maxJsonLength="2147483644">
    </jsonSerialization>
  </webServices>
</scripting>

I've also tried adding it directly to the controller. This is how I generate my json string

public ActionResult ChangeRequests_Read([DataSourceRequest] DataSourceRequest request)
    {
        return Json(GetRequests().ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    }

public static IEnumerable<ChangeRequestsVM> GetRequests()
    {
        var model = CompanyContextFactory.GetContextPerRequest();
        var chrwVM =  model.ChangeRequestsHDRs.Where(ch=> ch.CompanyID == GlobalVariables.CompanyID).Select(ch=> new ChangeRequestsVM
        {
            RequestID = ch.RequestID, 
            CompanyID = ch.CompanyID,
            ClientID = ch.ClientID,
            EmployeeID = (string.IsNullOrEmpty(ch.EmployeeID)) ? "NA" : ch.EmployeeID,
            AssignmentType = ch.AssignmentType,
            Key1 = ch.Key1,
            Key2 = ch.Key2,
            LogonID = ch.LogonID,
            ProcessDate = ch.ProcessDate,
            ProcessTime = ch.ProcessTime,
            ProcessUserID = ch.ProcessUserID,
            RequestDate = ch.RequestDate,
            RequestExport = ch.RequestExport,
            RequestNote = ch.RequestNote,
            RequestOrigin = Convert.ToChar(ch.RequestOrigin),
            RequestProcess = ch.RequestProcess,
            RequestStatus = ch.RequestStatus,
            RequestTime = ch.RequestTime,
            RequestType = Convert.ToChar(ch.RequestType),
            ResponseNote = ch.ResponseNote,
            TableName = ch.TableName,
            TransferDate = ch.TransferDate,
            TransferTime = ch.TransferTime,
            TransferUserID = ch.TransferUserID,
            dispOrigin = (Convert.ToChar(ch.RequestOrigin) == ChangeRequestOrigin.System) ? "System" : (Convert.ToChar(ch.RequestOrigin) == ChangeRequestOrigin.Client) ? "Client" : "Employee",
            dispRequestType = (Convert.ToChar(ch.RequestType) == ChangeRequestType.Insert) ? "Insert" : (Convert.ToChar(ch.RequestType) == ChangeRequestType.Alter) ? "Change" : "Delete",
            dispStatus = FieldTranslation.GetEnumDescription(typeof(enChangeRequestStatus), ch.RequestStatus ?? 0)
        }).OrderByDescending(ch=> ch.RequestID);

        return chrwVM;
    }

This is the full error I'm getting. The string being sent is HUGE but I am not sure how to figure out how big it is. What am I missing to get this JSON string to return without the error?

Error during serialization or deserialization using the JSON JavaScriptSerializer. 
The length of the string exceeds the value set on the maxJsonLength property

I've also tried it this way

public ActionResult ChangeRequests_Read([DataSourceRequest] DataSourceRequest request)
    {
        var result = Json(GetRequests().ToDataSourceResult(request), JsonRequestBehavior.AllowGet);

        var serializer = new JavaScriptSerializer();

        // For simplicity just use Int32's max value.
        // You could always read the value from the config section mentioned above.
        serializer.MaxJsonLength = Int32.MaxValue;

        var resultData = new { result };
        var result1 = new ContentResult
        {
            Content = serializer.Serialize(resultData),
            ContentType = "application/json"
        };
        return result1;
    }

    public static IEnumerable<ChangeRequestsVM> GetRequests()
    {
        var model = CompanyContextFactory.GetContextPerRequest();
        var chrwVM =  model.ChangeRequestsHDRs.Where(ch=> ch.CompanyID == GlobalVariables.CompanyID).Select(ch=> new ChangeRequestsVM
        {
            RequestID = ch.RequestID, 
            CompanyID = ch.CompanyID,
            ClientID = ch.ClientID,
            EmployeeID = (string.IsNullOrEmpty(ch.EmployeeID)) ? "NA" : ch.EmployeeID,
            AssignmentType = ch.AssignmentType,
            Key1 = ch.Key1,
            Key2 = ch.Key2,
            LogonID = ch.LogonID,
            ProcessDate = ch.ProcessDate,
            ProcessTime = ch.ProcessTime,
            ProcessUserID = ch.ProcessUserID,
            RequestDate = ch.RequestDate,
            RequestExport = ch.RequestExport,
            RequestNote = ch.RequestNote,
            RequestOrigin = Convert.ToChar(ch.RequestOrigin),
            RequestProcess = ch.RequestProcess,
            RequestStatus = ch.RequestStatus,
            RequestTime = ch.RequestTime,
            RequestType = Convert.ToChar(ch.RequestType),
            ResponseNote = ch.ResponseNote,
            TableName = ch.TableName,
            TransferDate = ch.TransferDate,
            TransferTime = ch.TransferTime,
            TransferUserID = ch.TransferUserID,
            dispOrigin = (Convert.ToChar(ch.RequestOrigin) == ChangeRequestOrigin.System) ? "System" : (Convert.ToChar(ch.RequestOrigin) == ChangeRequestOrigin.Client) ? "Client" : "Employee",
            dispRequestType = (Convert.ToChar(ch.RequestType) == ChangeRequestType.Insert) ? "Insert" : (Convert.ToChar(ch.RequestType) == ChangeRequestType.Alter) ? "Change" : "Delete",
            dispStatus = FieldTranslation.GetEnumDescription(typeof(enChangeRequestStatus), ch.RequestStatus ?? 0)
        }).OrderByDescending(ch=> ch.RequestID);

        return chrwVM;
    }
TheDizzle
  • 1,534
  • 5
  • 33
  • 76
  • Try the workaround given in this [answer](http://stackoverflow.com/a/7207539/604232) – Soham Oct 26 '16 at 18:46
  • I tried that with no luck. Will update my question – TheDizzle Oct 26 '16 at 18:57
  • I updated with what i've tried @Soham – TheDizzle Oct 26 '16 at 20:02
  • As per [the telerik website](http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/troubleshoot/troubleshooting#json-javascriptserializer-serialization-or-deserialization-error), to reduce the string length you may try to make your grid pageable or use ViewModel to serialize only the required properties. And the third solution given there you have already tried with no luck. – Soham Oct 26 '16 at 20:23

0 Answers0