ASP.NET MVC Ajax中的500内部错误

时间:2013-02-09 08:43:35

标签: c# ajax asp.net-mvc asp.net-mvc-ajax

我正在将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

为什么会出现此错误?
我该怎么做才能解决这个问题? 提前谢谢!

1 个答案:

答案 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("/");
}