2

我正在为我的 Web 应用程序使用 Visual Studio 2010 和 MVC 4。这是我的控制器代码:

公共 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 容器没有显示任何内容。在萤火虫这个错误提出:

NetworkError: 500 Internal Server Error + http://localhost....?X-Requested-With=XMLHttpRequest

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

4

1 回答 1

1

500 Internal Server Error 消息可能会以多种方式出现,因为服务器上的某些内容未正确处理。在您的情况下,作为推荐,您的MyContainer类型没有实现IDisposable接口,因此,您不能在using(){ }块上使用此类型。当您在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("/");
}
于 2013-02-09T23:57:34.550 回答