2013-02-09 93 views
2

我为我的Web应用程序使用Visual Studio 2010和MVC 4。这是我的控制器代码:ASP.NET MVC中的500内部错误Ajax

公众的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

使用调试器。 – leppie 2013-02-09 08:56:51

+0

您可以执行一些基本的故障排除,例如检查是否引发了任何异常而不是空白的catch子句。 – 2013-02-09 08:58:35

+0

在你的web配置文件中设置''并发布完整的错误信息消息你在萤火虫 – nemesv 2013-02-09 08:58:41

回答

1

可能以任何方式查看500内部服务器错误消息,因为服务器上的某些内容处理得不好。在你的情况下,正如你所赞扬的那样,你的MyContainer类型没有实现IDisposable接口,所以你不能在using(){ }块中使用这种类型。当您使用类型的块时,此类型必须实现IDIsposable,因为当它结束时,.Net Framework将从堆和参考中删除实例。我在你的代码上做了一些改变而没有使用block。看看:

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