【问题标题】:HttpListener setting a total connection timeoutHttpListener 设置总连接超时
【发布时间】:2015-11-23 16:48:19
【问题描述】:

我正在尝试控制HttpListener 中单个连接的最大总持续时间。我知道TimeoutManager 属性和它包含的5 个左右不同的超时值,但不清楚设置这些值中的每一个是否会加起来可能会在连接中发生延迟的总位置。

我正在寻找更多类似于以下内容的内容:“如果我们有一个从打开连接到现在持续时间超过 xs 的连接,请在不发送任何其他内容或等待其他任何内容的情况下中止它。”

编辑

为了澄清,我正在试验的场景涉及服务器尝试发送响应而客户端未接收。这会导致HttpListenerResponse.OutputStream.Write() 无限期挂起。我试图找到一种可以从另一个线程调用来硬中止连接的方法。我尝试使用OutputStream.Close() 并得到Cannot Close Stream until all bytes are written。我也试过HttpListenerResponse.Abort() 没有产生明显的效果。

【问题讨论】:

    标签: c# httplistener


    【解决方案1】:

    这些属性都不能满足您的需求。 HttpListener 旨在控制请求流、传入和传出数据,因此它不处理从完全收到响应到您发送响应之间的时间,您有责任处理它。

    如果总时间大于所需时间,您应该创建自己的机制来中止请求,只需一个计时器就足够了,当创建新连接时,将一个计时器排入队列,总超时时间为到期时间,如果请求在定时器到期之前结束取消定时器,否则定时器中止请求。

    【讨论】:

      猜你喜欢
      • 2012-05-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 2014-02-19
      • 2013-01-24
      相关资源
      最近更新 更多