Я маю .NET веб-сервіс, який мені потрібно асинхронно вдарити з jQuery та оновити сітку на основі результатів, отриманих від служби. Моя проблема тут полягає в тому, що звернення до служби асинхронізується лише вперше, а наступні запити синхронізуються (навіть після вказівки async = true у виклику ajax), як показано нижче
jQuery.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function(msg) {
var result = msg.d;
return callback(result);
},
error: $.callDotNetSM.onError
});
Мій метод .NET-сервісу є приблизно таким, як показано нижче.
[WebMethod(EnableSession = true)]
public static string GetData()
{
}
Тож, будь ласка, допоможіть мені постійно телефонувати до служби асинхронно. Будь-яка допомога дуже вдячна.
Відповіді:
5 за відповідь № 1Сторінка, до якої викликається ваш WebMethod, повинна мати таке в Директиві про сторінки:
<%@ Page Async="true" EnableSessionState="False" %>
Причиною цього є те, що ASP.NET блокує сеанс кожного разу, коли до нього здійснюється доступ, так що він не може працювати асинхронно. Навіть якщо ви не використовуєте сеанс у своєму WebMethod, сторінка все ще вважає, що використовує його за замовчуванням, якщо ви не вкажете інше.
Редагувати:
Вашою проблемою може бути також те, що у вас є EnableSession="true"
. Можливо, вам просто потрібно буде встановити для нього значення false.