错误状态:'内部服务器错误'。错误代码:500 - jqGrid的ASP.NET MVC

错误状态:'内部服务器错误'。错误代码:500 - jqGrid的ASP.NET MVC

问题描述:

我使用的jqGrid模式窗体添加和表格的编辑行。我使用实体框架和数据库优先方法从现有数据库创建模型。当我添加或编辑行时,行会被正确添加或编辑并正确保存在数据库中,当我在jqGrid中检索添加或编辑的行和视图时,它们会正确显示。不过,唯一的问题是,当我添加或编辑,它抛出错误状态:“内部服务器错误”。错误代码:500以模式形式。错误状态:'内部服务器错误'。错误代码:500 - jqGrid的ASP.NET MVC

任何人都知道为什么会发生这种情况?由于添加或编辑正常发生,是否有一种方法可以忽略此错误消息并使其不显示?

任何帮助,非常感谢!

编辑:

public ActionResult Create(string oper, string id, Employee employee) 
{ 
try 
{ 
if (oper == "add") 
{ 
    if (ModelState.IsValid) 
    { 
    db.Employees.Add(employee); 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
    } 
} 
if (oper == "edit") 
{ 
    if (ModelState.IsValid) 
    { 
    db.Entry(employee).State = EntityState.Modified; 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
    } 
} 
    if (oper == "del") 
    { 
    Employee employees = db.Employees.Find(Int32.Parse(id)); 
    db.Employees.Remove(employees); 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
    } 
} 
catch (InvalidOperationException ex) 
{ 
} 
catch (Exception e) 
{ 
} 
} 
+1

您应该调试在添加/编辑操作时将在服务器端执行的代码。代码有一个产生异常的错误。您可以逐步调试代码,例如查找问题的原因。 – Oleg 2012-07-31 16:03:57

+0

用附加的调试器运行站点,我相信你会看到抛出的异常。否则,使用浏览器调试工具(萤火虫,Chrome开发者工具,IE开发者工具)检查从请求,这应该是一个YSOD – 2012-07-31 16:07:22

+0

@Oleg返回的数据:您的建议感谢。我调试了代码,奇怪的是它没有抛出任何异常,我把代码放在try/catch中,注意到没有抛出任何异常。在能够成功添加/编辑记录并进行适当处理之前,我能够查看所有例外情况。但是,在正确添加/编辑记录之后,没有发现异常,但仍会引发此错误。这就是我很困惑。任何建议以某​​种方式处理这个错误,而不是在服务器端被捕获? – inspiringmyself 2012-07-31 16:09:10

感谢大家对您的建议。我知道我做错了什么。实际上,问题不在于数据格式不正确或代码未被命中,问题出在我将更改保存到数据库之后,这就是为什么它没有被捕获到异常块中。

在将对数据库的更改保存为[db.SaveChanges()]后,我将重定向到索引操作。这就是问题所在。我正在重定向到错误的索引操作。这个Index操作中的代码试图返回一个null值,因此引发了ArgumentNullException,并显示了YSOD。

注意:我能用事件查看器发现ArgumentNullException。在运行中键入事件查看器并转到Windows日志 - 应用程序。您将能够看到您的应用程序的所有警告。打开警告,转到常规选项卡,您将能够看到抛出什么样的异常。希望这可以帮助有需要的人。