调试jquery dataTable 服务器端:ERR_CONNECTION_RESET 200 错误

问题描述

按照此存储库中的示例实现 jquery Datatable 服务器端处理 https://github.com/DavidSuescunPelegay/jQuery-datatable-server-side-net-core

加载结果的控制器是这样定义的

    [HttpPost]
    public async Task<IActionResult> LoadTable([FromBody]DtParameters dtParameters)
    {

        return Json(new DtResult<TestRegister>
        {
            Draw = dtParameters.Draw,RecordsTotal = totalResultsCount,RecordsFiltered = filteredResultsCount,Data = await result
                .Skip(dtParameters.Start)
                .Take(dtParameters.Length)
                .ToListAsync()
        });
    }

TestRegister、DtResult 类从存储库复制

    https://github.com/DavidSuescunPelegay/jQuery-datatable-server-side-net-core/blob/master/src/jQueryDatatableServerSideNetCore/Models/DatabaseModels/TestRegister.cs
    
    https://github.com/DavidSuescunPelegay/jQuery-datatable-server-side-net-core/blob/master/src/jQueryDatatableServerSideNetCore/Models/AuxiliaryModels/DatatableModels.cs
    

代码似乎工作正常,我按预期在 HTML 页面得到响应

我将类更改为我自己的自定义类 StudentMaster ,它是实体框架 Db 表的表示形式,它具有一些属性和相关表,例如

    public class StudentMaster
    {
        public StudentMaster();
        [MaxLength(50)]
        public string identifier { get; set; }
        public string Name { get; set; }        
        ...
        ..
        ...
        ...
        ..
        
        public StudentType SType { get; set; }
        ...
        ..
        ...
        public ICollection<Exam> Exams { get; set; }
        
    }   

现在我从控制器返回这个类,没有异常,调试器正在返回 Json 行

       var query = // my actual sql query to fetch data from db table with all conditions 
       
        var response = new DtResult<AppEntities.StudentMaster>
        {
            Draw = dtParams.Draw,Data = query
               .Skip(dtParams.Start)
               .Take(dtParams.Length)
               .ToListAsync()
        };
        try
        {
            return Json(response);
        }
        catch(Exception ex)
        {
            return Content("NOK");
        }

但是我没有在 HTML 中得到任何响应,而是在控制台我可以看到这个错误并且调试器没有命中任何异常。我可以看到调试器正在传递返回 Json 行

VM71:1 POST https://localhost:44320/Students/LoadTable net::ERR_CONNECTION_RESET 200 (OK)

调试器一直到 DtResult 类的那一行,然后调试没有进展,我可以在浏览器控制台中看到 ERR_CONNECTION_RESET 消息

  public IEnumerable<T> Data { get; set; } 

有什么方法可以调试此错误的原因,了解此行发生的情况以及调试器没有进一步移动的原因。是因为属性错误还是 是因为我传递的数据类型错误(对象列表)还是其他原因?

我尝试用自定义定义的项目列表替换数据,其中只有 2 个属性,如下所示,没有问题

        List<AppEntities.StudentMaster> fakeItems = Enumerable.Range(0,100).Select(i => new AppEntities.StudentMaster
        {
            Name = "Name " + i,identifier = "identifier" + i                
        }).ToList();
        

所以看起来数据有问题,但不知道如何调试

解决方法

在要调试 jquery 的地方应用“调试器”。然后将其上传到服务器,然后您就可以轻松调试了。 例如以下:

function func(){
    //Some stuff
    debugger;  //Debugging is automatically started from here
    //Some stuff
}
func();