2013-02-09 4 views
2

Я использую Visual Studio 2010 и MVC 4 для своего веб-приложения. Это мой код контроллера:500 Внутренняя ошибка в ASP.NET MVC 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("/"); 
     } 
    } 

Этот метод будет сделано успешно, но мой Аякса контейнер не показывать какие-то вещи. В поджигатель эта ошибка поднял:

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

Почему происходит эта ошибка?
Что делать, чтобы решить эту проблему?
Заранее благодарен!

+0

Используйте отладчик. – leppie

+0

Вы можете выполнить некоторые основные операции по устранению неполадок, например, проверить, создано ли какое-либо исключение, вместо того, чтобы иметь пустое предложение catch. –

+0

Установите '' в своей веб-конфигурации и опубликуйте полное сообщение об ошибке, которое вы видите в firebug – nemesv

ответ

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