HttpListener设置总连接超时时间

5
我试图控制HttpListener中单个连接的最大总持续时间。我知道TimeoutManager属性和其中包含的5个或更多不同的超时值,但不清楚设置这些值是否会累加到连接中可能发生延迟的总次数。
我想要的是更接近于以下内容:“如果我们有一个连接从打开连接到现在持续了x秒以上,则中止该连接,而不发送任何其他内容或等待任何其他内容。”
编辑:
为了澄清,我正在尝试的场景涉及服务器尝试发送响应而客户端未收到。这会导致HttpListenerResponse.OutputStream.Write()无限期挂起。我试图找到可以从另一个线程调用以强制中止连接的方法。我尝试使用OutputStream.Close()并得到“所有字节都写入后才能关闭流”的错误消息。我还尝试过HttpListenerResponse.Abort(),但没有看到任何效果。
1个回答

4

这些属性都不能满足您的需求。HttpListener旨在控制请求流、传入和传出数据,因此它不处理响应完全接收后发送响应之间的时间,这是您需要自行解决的。

如果总时间超过所需时间,您应该创建自己的机制来中止请求,只需使用一个计时器即可。当创建新连接时,将具有总超时时间作为到期时间的计时器排队,如果请求在计时器到期之前结束,则取消计时器,否则计时器会中止请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接