0

我正在研究一个异步 HTTP 处理程序,并试图确定HttpResponse.Write函数是否阻塞,直到它收到来自客户端的 ACK。

MSDN 文档没有具体说明;但是,我知道 ISAPI WriteClient() 函数(类似机制)的 MSDN 文档提到同步版本在尝试向客户端发送数据时会阻塞。

我想到了三种可能的方法来确定答案:

  1. 有人告诉我它是非阻塞的
  2. 编写一个低级 TCP 测试客户端并在确认上设置断点(这可能吗?)
  3. 使用反射来检查方法的内部工作原理HTTPResponse.Write(这可能吗?)
4

2 回答 2

2

它不会阻塞,但可以使用缓冲区并将它们一起发送。

尝试设置HttpResponse.Buffer=false;为直接写入您的客户端。

您还可以使用HttpResponse.Flush();to 强制将您拥有的内容发送给您的客户。

关于MSDN 上的 HttpResponse.Buffer 属性

也许这让您很感兴趣:Web 应用程序在处理共享同一会话的另一个 Web 应用程序时被阻止

于 2013-05-18T14:49:38.463 回答
0

HttpResponse 以两种不同的模式运行,缓冲和非缓冲。在缓冲模式下,各种Write函数将它们的数据放入内存区域,一旦数据被复制,函数就会返回。如果设置Buffer为 false,Write则阻塞,直到所有数据都发送到客户端。

于 2013-05-22T16:20:23.370 回答