我在尝试创建 json 时不断收到此错误。这是完整的错误
Error during serialization or deserialization using the JSON
JavaScriptSerializer. The length of the string exceeds
the value set on the maxJsonLength property.
我的代码如下
public ActionResult ChangeRequests_Read([DataSourceRequest] DataSourceRequest request)
{
var data = GetRequests();
var serializer = new JavaScriptSerializer();
var result = new ContentResult();
serializer.MaxJsonLength = Int32.MaxValue; // Whatever max length you want here
result.Content = serializer.Serialize(data.ToDataSourceResult(request));
result.ContentType = "application/json";
return result;
//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;
}
为什么我的 json 超长了?我做到了,所以该方法只从数据库中提取一项,但仍然出现错误。
最佳答案
您需要增加 MaxJsonLength 属性的大小:
这是在配置文件中完成的。有关详细信息,请参阅上面的链接。
更新:
由于您使用的是 MVC,因此您可以使用以下应用设置:
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="123456789" />
...
</appSettings>
但是,请注意这是一个潜在的安全风险。在这里阅读更多:
https://msdn.microsoft.com/en-us/library/hh975440(v=vs.120).aspx
关于c# - 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494775/