如果HTTP是无连接的,那么ASP.net响应属性,HttpResponse.IsClientConnected检测客户端是如何连接的呢?
答案 0 :(得分:5)
HTTP不是"无连接" - 您仍然需要连接才能从服务器接收数据;更准确地说,HTTP是无状态。在HTTP上运行的应用程序很可能实际上是有状态的,但HTTP本身不是。
"无连接"也可以指使用UDP作为传输而不是TCP的系统。 HTTP主要通过TCP运行,几乎每个真实的Web服务器都期望并返回TCP消息而不是UDP。您可能会在基于UDP的协议(如UPnP)中看到类似HTTP的流量,但由于您希望可靠地传送您的网页,因此将始终使用TCP而不是UDP。
对于IsClientConnected
,当您访问该属性时,它会调用当前HttpWorkerRequest
,这是当前主机环境实现的抽象类。
false
。以下是相关的源代码:
HttpResponse.IsClientConnected
:http://referencesource.microsoft.com/#System.Web/HttpResponse.cs,80335a4fb70ac25f IIS7WorkerRequest.IsClientConnected
:http://referencesource.microsoft.com/#System.Web/Hosting/IIS7WorkerRequest.cs,1aed87249b1e3ac9 ISAPIWorkerRequest.IsClientConnected
:http://referencesource.microsoft.com/#System.Web/Hosting/ISAPIWorkerRequest.cs,f3e25666672e90e8 答案 1 :(得分:2)
这一切都始于HTTP请求。例如,在其中,您可以生成工作线程,这可以比请求本身更长。这里是IsClientConnected派上用场的地方,因此工作线程知道客户端已经收到响应并且已经断开连接。