ASP.net"HttpResponse.IsClientConnected"如何工作?

Pya*_*ung 0 asp.net http

如果HTTP是无连接的,那么ASP.net响应属性,HttpResponse.IsClientConnected检测客户端是如何连接的?

Dai*_*Dai 5

HTTP不是"无连接" - 您仍然需要连接才能从服务器接收数据; 更准确地说,HTTP是无状态的.在HTTP上运行的应用程序很可能实际上是有状态的,但HTTP本身不是.

"无连接"也可以指使用UDP作为传输而不是TCP的系统.HTTP主要通过TCP运行,几乎每个真实的Web服务器都期望并返回TCP消息而不是UDP.您可能会在基于UDP的协议(如UPnP)中看到类似HTTP的流量,但由于您希望可靠地传送网页,因此将始终使用TCP而不是UDP.

至于IsClientConnected,当您访问该属性时,它会调用HttpWorkerRequest当前主机环境实现的抽象类current.

  • IIS7 +实现它,如果它先前收到TCP断开消息(设置字段),该方法现在将返回false.
  • 相反,ISAPI实现(IIS 6)调用IIS中的一个函数,如果当前请求/响应上下文中的TCP客户端仍然连接,则通知调用者,尽管它可能在相同的基础上工作:当Web服务器收到TCP超时时,断开连接或连接重置消息它设置一个标志并让继续执行而不是终止响应生成器线程.

这是相关的源代码: