ASP.NET MVC 3 Jquery Ajax не получает ответ до тех пор, пока не завершится асинхронная функция на стороне сервера - PullRequest
0 голосов
/ 23 июня 2011

Я отправляю форму в действие MVC, используя jquery Ajax.На стороне сервера я вызываю асинхронную функцию отправки почты.Во время отладки я вижу, что выполнение продолжается до конца через оператор return из действия.Даже если оператор return достигнут, обратный вызов ajax success не вызывается до тех пор, пока не завершится асинхронная функция почты.Я наблюдаю в Firebug, что POST все еще ждет ответа.Почему ответ блокируется до завершения асинхронного вызова?Любой способ исправить это?

Я тестировал как веб-сервер разработки Visual Studio, так и localhost IIS 7.5 (windows 7).Я не тестировал на сервере Windows.

Я просмотрел переполнение паутины и стека и не нашел ответа.Самым близким, что я обнаружил, было упоминание о том, что веб-сервер visual studio не такой «многопоточный», как локальный IIS, но, поскольку я тестировал оба, это должно быть нечто иное.

Спасибо!Philip

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

потому что ответ вашего ajax-сообщения ждет, пока ваш ajax-вызов отправки почты не будет завершен, поэтому вы можете сделать вызов отправлять почту в другом потоке или, если это возможно, вызвать jquery

0 голосов
/ 23 июня 2011

Вы проверяли следующий SO вопрос?

ASP.NET MVC: отправка электронной почты с использованием SendAsync (System.Net.Mail)

Согласно предложению @ Miroprocessor, начать новую тему довольно просто:

public ActionResult DoSomeStuff()
{

    // Code here 

    new Thread(() => 
    {
        // Email code here
    }).Start();

    return View();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...