c# - 如何发现一个asp.net客户端立即断开连接

标签 c# asp.net client disconnected

我知道 Response.IsClientConnected 但在我的场景中它有很大的延迟。代码:

// sample code for sending a dynamic file in chuncks

long bytesSent = 0;

while (continueSending)
   {
      if (!AskReceiverToContinue())
         break;

      if (!Response.IsClientConnected)
         break;

     // Your suggestion goes here... :)

      try
      {
         Response.OutputStream.Write(buffer, 0, buffer.Length);
         bytesSent += buffer.Length;
      }
      Catch
      {  // To my experience, this is more reliable than Response.IsClientConnected
         continueSending = false;
      }
   }

问题是客户端实际接收到的字节数比我的 bytesSent 少很多。似乎当客户端断开连接时,我的程序发现情况有很大的滞后(并继续增加 bytesSent),这是因为 ASP.NET 告诉我情况(客户端断开连接)晚了。

是否有任何可靠的方法来查明客户端何时断开连接(实时)?

最佳答案

您正在通过 HTTP 进行传输,对吗?如果是的话,由于HTTP协议(protocol)的无状态性,没有办法。您唯一需要帮助的是超时,您已经在使用它。

关于c# - 如何发现一个asp.net客户端立即断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5056988/

相关文章:

c# - ASP.NET 电子邮件模式

vb.net - 使用 VB.NET 客户端从 Java Web 服务获取响应

node.js - Node http.request 不工作

java - Java 和 HTTPS 中的导入私钥问题

c# - 在 Web API 中创建 POST 方法

ASP.NET url MAX_PATH 限制

c# - 有条件的 foreach 循环

c# - 如何避免 "Response.Redirect cannot be called in a Page callback"

c# - 如何通过配置静态方法来防止故障(内存泄漏)?

C#:String.Format 是否调用输入的 ToString?