我正在将Visual Studio 2010和MVC 4用于我的Web应用程序。这是我的控制器代码:
public ActionResult MyController()
{ if (Request.IsAjaxRequest()) { using (MyContainer context = new MyContainer()) { try { var result = Some Query; return PartialView("_MyView", result); } catch (Exception ex) { } } } if (User.Identity.IsAuthenticated) { return RedirectToAction("Index", "Home", new { area = "User" }); } else { return Redirect("/"); } }
此方法将成功完成,但我的ajax容器没有显示任何内容。在firebug中出现了这个错误:
NetworkError: 500 Internal Server Error + http://localhost....?X-Requested-With=XMLHttpRequest
为什么会出现此错误?
我该怎么做才能解决这个问题?
提前谢谢!
答案 0 :(得分:1)
可能会以多种方式看到500内部服务器错误消息,因为在服务器上未正确处理某些内容。在您的情况下,作为表彰,您的MyContainer
类型未实现IDisposable
接口,因此,您无法在using(){ }
块上使用此类型。当您在使用块上使用类型时,此类型必须实现IDIsposable,因为当它结束时,.Net Framework将从堆和引用中删除实例。我在不使用块的情况下对代码进行了一些更改。看看:
public ActionResult ActionName()
{
if (Request.IsAjaxRequest())
{
try
{
MyContainer context = new MyContainer();
var result = Some Query;
return PartialView("_MyView", result);
}
catch (Exception ex)
{
// return some partial error that shows some message error
return PartialView("_Error");
}
}
if (User.Identity.IsAuthenticated)
{
return RedirectToAction("Index", "Home", new { area = "User" });
}
return Redirect("/");
}