【问题标题】:The requested URL returned 500 - Internal Server Error请求的 URL 返回 500 - 内部服务器错误
【发布时间】:2015-06-01 03:26:28
【问题描述】:

我在使用 kendo-grid 的项目 asp.net mvc razor 中遇到问题。数据模型如下:

public partial class Usuario
{
    private string _id;
    public virtual string Id
    {
        get
        {
            return this._id;
        }
        set
        {
            this._id = value;
        }
    }

    private string _idPerfil;
    public virtual string IdPerfil
    {
        get
        {
            return this._idPerfil;
        }
        set
        {
            this._idPerfil = value;
        }
    }

    private string _idEntidad;
    public virtual string IdEntidad
    {
        get
        {
            return this._idEntidad;
        }
        set
        {
            this._idEntidad = value;
        }
    }

    private int? _idDepArea;
    public virtual int? IdDepArea
    {
        get
        {
            return this._idDepArea;
        }
        set
        {
            this._idDepArea = value;
        }
    }

    private Char _forzarCambioClave;
    public virtual Char ForzarCambioClave
    {
        get
        {
            return this._forzarCambioClave;
        }
        set
        {
            this._forzarCambioClave = value;
        }
    }

    private short? _idDirectivaSeguridad;
    public virtual short? IdDirectivaSeguridad
    {
        get
        {
            return this._idDirectivaSeguridad;
        }
        set
        {
            this._idDirectivaSeguridad = value;
        }
    }

    private string _hash;
    public virtual string Hash
    {
        get
        {
            return this._hash;
        }
        set
        {
            this._hash = value;
        }
    }

    private Char _requiereRol;
    public virtual Char RequiereRol
    {
        get
        {
            return this._requiereRol;
        }
        set
        {
            this._requiereRol = value;
        }
    }

    private string _idEstado;
    public virtual string IdEstado
    {
        get
        {
            return this._idEstado;
        }
        set
        {
            this._idEstado = value;
        }
    }

    private long _idPersona;
    public virtual long IdPersona
    {
        get
        {
            return this._idPersona;
        }
        set
        {
            this._idPersona = value;
        }
    }

    private Estado _estado;
    public virtual Estado Estado
    {
        get
        {
            return this._estado;
        }
        set
        {
            this._estado = value;
        }
    }

    private DirectivaSeguridad _directivaSeguridad;
    public virtual DirectivaSeguridad DirectivaSeguridad
    {
        get
        {
            return this._directivaSeguridad;
        }
        set
        {
            this._directivaSeguridad = value;
        }
    }

    private Entidad _entidade;
    public virtual Entidad Entidad
    {
        get
        {
            return this._entidade;
        }
        set
        {
            this._entidade = value;
        }
    }

    private Persona _persona;
    public virtual Persona Persona
    {
        get
        {
            return this._persona;
        }
        set
        {
            this._persona = value;
        }
    }

    private IList<Rol> _roles = new List<Rol>();
    public virtual IList<Rol> Roles
    {
        get
        {
            return this._roles;
        }
    }

    private IList<LogMasterAuditoria> _logsMasterAuditoria = new List<LogMasterAuditoria>();
    public virtual IList<LogMasterAuditoria> LogsMasterAuditoria
    {
        get
        {
            return this._logsMasterAuditoria;
        }
    }

}

控制器管理模式是:

public class UsuariosController : BaseController
{
    private Usuario usuario = new Usuario();

    public ActionResult Cargar([DataSourceRequest]DataSourceRequest request)
    {
        return Json(backend.Usuarios.ToDataSourceResult(request));
    }

... }

视图是:

<div>
    @(Html.Kendo().Grid<NetInfinity.BackendCore.Usuario>()
        .Name("grid")
        .Columns(columns =>
        {
            columns.Bound(c => c.Id).Filterable(false).Width(100).Title(@Usuarios.Id);
            columns.Bound(c => c.Persona.Nombres).Width(80).Title(@Usuarios.Nombre);
            columns.Bound(c => c.Estado.Descripcion).Width(60).Title(@Usuarios.NombrePerfil);
            columns.Bound(c => c.Persona.TipoIdentidad.FormatoPresentacion).Width(20).Title(@Usuarios.IdTipo);
            columns.Bound(c => c.Persona.NumeroIdentificacion).Width(30).Title(@Usuarios.IdNumero);
            columns.Command(c => c.Custom("Edit").Text("Editar"));
            columns.Command(c => c.Custom("Remove").Text("Eliminar"));
        })
        .ToolBar(t => { t.Excel(); })
        .Navigatable()
        .Pageable()
        .Sortable()
        .Scrollable()
        .Filterable()
        .Editable(e => e.Mode(GridEditMode.PopUp))
        .Resizable(resize => resize.Columns(true))
        .HtmlAttributes(new { style = "height:430px;" })
        .DataSource(dataSource => dataSource
            .Ajax()
            .ServerOperation(false)
            .Model(model => model.Id(c => c.Id))
            .Read(read => read.Action("Cargar", "Usuarios"))
         )
    )
</div>

从 Controller 执行 Json 序列化时似乎会出现问题,因为网格中没有数据显示并且表有行。也许从模型中序列化对象(如虚拟属性)存在问题,例如:虚拟角色对象等。请需要有关如何使用它的帮助。

【问题讨论】:

  • 500 表示服务器端出了点问题,您能否在响应中发送异常消息和堆栈跟踪(ActionResult),或者只是在服务器端调试它...

标签: c# kendo-ui kendo-grid kendo-asp.net-mvc


【解决方案1】:

您是否尝试过调试它并获取异常消息 + 堆栈跟踪来检测错误?调试器是避免“可能”的好工具。此外,如果在 Web.config 中打开了此类配置,ASP.NET 肯定会返回错误描述。

请通过调试找到错误并在此处发布异常详细信息。

或更改您的 Web.config 以使您具有以下值:

<configuration>
    <system.web>
        <customErrors mode="Off" />
    </system.web>
</configuration>

刷新页面,您将获得错误说明。
检测错误并修复它或在此处发布,我们将为您提供帮助。

【讨论】:

  • ASP.NET C# 代码中没有发生错误,是 kendo-grid 和 jquery 错误的组合。错误是:POST localhost:3780/Soporte/Usuarios/Cargar 500(内部服务器错误)jquery-2.1.3.js:8625 发送 jquery-2.1.3.js:8625 jQuery.extend.ajax jquery-2.1.3.js:8161 pt.extend。读取 kendo.web.min.js:11 m.transports.aspnetmvc-ajax.f.data.RemoteTransport.extend.read kendo.aspnetmvc.min.js:9 (匿名函数) kendo.web.min.js:11 ht .extend._queueRequest kendo.web.min.js:11 ... 继续
  • 继续... ht.extend.read kendo.web.min.js:11 ht.extend.query kendo.web.min.js:11 ht.extend._query kendo.web.min .js:11 ht.extend.fetch kendo.web.min.js:11 pt.ui.DataBoundWidget.extend.init kendo.web.min.js:30(匿名函数) kendo.web.min.js:10 jQuery .extend.each jquery-2.1.3.js:374 jQuery.fn.jQuery.each jquery-2.1.3.js:139 e.fn.(匿名函数) kendo.web.min.js:10(匿名函数) VM375:1 触发 jquery-2.1.3.js:3094 self.add jquery-2.1.3.js:3140 jQuery.fn.ready jquery-2.1.3.js:3373 jQuery.fn.init jquery-2.1.3。 js:2816 jQuery jquery-2.1.3.js:76 (匿名函数) VM375:1 继续
  • 继续... jQuery.extend.globalEval jquery-2.1.3.js:328 jQuery.fn.extend.domManip jquery-2.1.3.js:5430 jQuery.fn.extend.append jquery -2.1.3.js:5213 (匿名函数) kendo.web.min.js:41 jQuery.extend.each jquery-2.1.3.js:374 h.extend.append kendo.web.min.js:41 $ .ajax.success Principal:121 fire jquery-2.1.3.js:3094 self.fireWith jquery-2.1.3.js:3206 done jquery-2.1.3.js:8259 (匿名函数) jquery-2.1.3.js :8600。我不得不将错误分成 3 个 cmets
  • 当 kendo-grid 执行 .Read(read => read.Action("Cargar", "Usuarios")) 时,它会转到控制器执行 return Json(backend.Usuarios.ToDataSourceResult(request)) .就在 Json 返回 kendo-grid 时,抛出 500 internal server error。问题是由 Usuario 类(具有另一个类和列表)表示的复杂对象引起的,因为尝试使用 Usuario 的普通 ViewModel(只是简单的属性),kendo-grid 工作正常。 ¿我是否必须将我的项目更改为 web-api?
  • 您好,通过使用提琴手,我在检查器中发现了这个:Error de servidor en la aplicación。硒检测ó una referencia circular al serializar un objeto de tipo 'NetInfinity.BackendCore.Usuario'。描述: Excepción no controlada al ejecutar la solicitud Web 实际。修改 el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código。例外细节:在 System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, ...) 中,在 System.Web.Mvc.JsonResult.ExecuteResult(ControllerContext context)中
猜你喜欢
  • 2015-11-08
  • 2012-09-03
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 2021-01-14
相关资源
最近更新 更多