是HttpResponse.Write阻塞函数

时间:2013-05-18 13:48:38

标签: c# asp.net

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

关于HttpResponse.Buffer Property on MSDN

也许这对你有用:Web app blocked while processing another web app on sharing same session

答案 1 :(得分:0)

HttpResponse以两种不同的模式运行,缓冲和非缓冲。在缓冲模式下,各种Write函数将其数据放入内存区域,并在复制数据后立即返回该函数。如果将Buffer设置为false,则Write会阻止,直到所有数据都发送到客户端。