在.ashx中同时处理多个$.ajax调用

本文关键字:ajax 调用 处理 ashx | 更新日期: 2023-09-27 18:29:50

我的GenericHandler.ashx中有以下方法:

private void T1()
{
    System.Threading.Thread.Sleep(2000);
    Ctx.Response.Write(Serializer.Serialize(new { foo = "bar" }));
}

如果我同时对处理程序进行两次$.ajax-调用,我将在2秒后得到第一个响应,在4秒后得到下一个响应。

有什么方法可以让我的GenericHandler.ashx同时处理两个ajax调用吗?

在.ashx中同时处理多个$.ajax调用

您似乎需要一个异步HTTP处理程序

在处理异步HTTP处理程序的过程中,ASP.NET将通常用于外部进程的线程返回直到处理程序从外部过程。这样可以防止线程阻塞并改进性能,因为只有有限数量的线程可以执行同时如果许多用户请求同步HTTP处理程序依靠外部进程,操作系统可能会很快耗尽的线程,因为许多线程被阻塞并等待外部过程。

当前方法的主体将位于所提供的示例的StartAsyncTask方法主体中

您需要在会话期间加载一次jquery.uno唐突-ajax。检查是否已加载:

if (Request.Headers["X-Requested-With"] != "XMLHttpRequest")
{
    Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js");
}

如果没有看到$.ajax的参数,我猜您需要将async设置为true。

$.ajax({
   url: "page.ashx",
   async: true
});

此外,请注意,不同的浏览器会根据一次允许的请求数量做出不同的反应。

检查异步。