2016-07-07 17 views
0

Я создаю решение, используя asp.net MVC, и это мой первый раз.Решение MVC становится неактивным

Проблема

После решения уже работает в течение некоторого времени контроллеры перестает отвечать на запросы. Клиентская сторона работает нормально, а при вызове контроллера с использованием ajax контроллер начинает excecuting, но всякий раз, когда он попадает в первую строку, он прекращает отмену. Ajax-вызов все еще ждет ответа, и я могу сделать новый запрос (который также останавливается). Он не бросает никаких ошибок, он просто кивает. Это происходит как при отладке, так и при запуске без отладки. Структура Entity используется в некоторых из этих методов контроллера для вызовов базы данных, если она имеет какое-либо отношение к ошибке.

Я подозревал, что одна из этих вещей должно быть сделано, но я не уверен вообще:

  • Является ли это только вопрос, потому что я использую локальный?
  • Существуют ли некоторые параметры, описывающие максимальную продолжительность выполнения? Есть ли какая-то конкретная вещь
  • Я должен делать всякий раз, когда вызывается контроллер?
  • Имеет ли база данных какое-либо отношение к остановке?

Я не уверен, какой код для присоединения, так как эта ошибка, похоже, произойдет через некоторое время, а не специфична для контроллера или метода. Дайте мне знать, если вы хотите что-то увидеть.

Редактировать Я добавляю один пример ajax в качестве примера, но обратите внимание, что работает вызов ajax. Это контроллеры (не только RemoveTest-контроллер), которые останавливаются и только после отладки в течение некоторого времени.

$.ajax({ 
    type: "POST", 
    url: "/RemoveTest/RemoveByPlacement", 
    data: { input: someInput}, 
    dataType: "json", 
    success: function (data) { 
     alert(data); 
    }, 
    error: function() { 
     alert("Error"); 
    } 
}); 

Edit 2 Я должен сказать, что, может быть, это не происходит только при использовании Ajax. Проблема также возникает при открытии новой страницы, так как это также требует выполнения от контроллера.

ОБНОВЛЕНИЕ Это может быть проблема с базой данных. Я вставил var a = 10; к моему контроллеру, и это выполняется. Но он останавливается после попытки выполнить линию после.

[HttpPost] 
    public JsonResult RemoveById(string id) 
    { 
     var a = 10; 
     TestReciving test = db.TestRecevings.FirstOrDefault(x => x.Id == id); 
     Placement placement = db.Placements.FirstOrDefault(x => x.TestRecivingIdRef == id); 

     ... 

    } 

UPDATE Я сделал то, что сказал Марк Гомер. Хотя это должно было быть исправлено, оно не решило мою проблему. При запуске в IE я получаю сообщение HTML1300 (при навигации) при смене страницы, но когда он останавливается, и я пытаюсь открыть файл, который я получаю, «http://localhost:51140/Account/Login не может быть открыт». Мне кажется, что IIS Express перестает отвечать, хотя он продолжает работать.

Контроллер будет выглядеть так:

[HttpPost] 
public JsonResult RemoveById(string id) 
{ 
    using (var db = new DatabaseContext()) 
    { 
     TestReciving test = db.TestRecevings.FirstOrDefault(x => x.Id == id); 
     Placement placement = db.Placements.FirstOrDefault(x => x.TestRecivingIdRef == id); 

     ... 
    } 
} 
+0

Видя, что ваш код помогает - возможно, лучший вызов ajax. Знаете, где он прекращает выполнение –

+0

Я отредактировал с примером. – user3265569

+0

Спасибо, вы также можете отправить метод контроллера? И что такое SomeInput? Строка и т. Д. –

ответ

0

Так что я, наконец, получил его на работу. Проблема была двуглавым гигантом, и именно поэтому у меня были проблемы, связанные с этим.

Первый выпуск Марк Гомер сказал использовать using, когда я использовал базу данных. Я сделал это, и пока он решил подмножество проблемы, он не разрешил его полностью. Но с этого дня я буду помнить использовать using.

Второй выпуск я не смог разыскать его на что-то конкретное, но я создал новый проект и переместил свои файлы в ней (кроме автогенерируемая один раз). Поскольку это не удалось воспроизвести проблему. Я попытался использовать GitHub, чтобы найти различия в двух решениях, но только чтобы найти, что у неработающего проекта были разные версии фреймворка. Меня это очень беспокоит, что я не могу определить причину, но, по крайней мере, это работает.

Спасибо за ваши ответы, ребята.